BR112021011019A2 - 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
- BR112021011019A2 BR112021011019A2 BR112021011019-4A BR112021011019A BR112021011019A2 BR 112021011019 A2 BR112021011019 A2 BR 112021011019A2 BR 112021011019 A BR112021011019 A BR 112021011019A BR 112021011019 A2 BR112021011019 A2 BR 112021011019A2
- Authority
- BR
- Brazil
- Prior art keywords
- partition
- block
- image
- prediction
- encoder
- Prior art date
Links
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/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/86—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
-
- 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/117—Filters, e.g. for pre-processing or post-processing
-
- 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/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- 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/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
-
- 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/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- 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/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
-
- 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/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
codificador, decodificador, método de codificação e método de decodificação. a presente invenção refere-se a um dispositivo de codificação (100) que está provido com um circuito e uma memória que está conectada no circuito. em operação, o circuito divide um bloco de uma imagem a ser codificada em uma pluralidade de partições que inclui uma primeira partição e uma segunda partição que são adjacentes uma à outra executa transformação ortogonal em somente a primeira partição dentre a primeira partição e a segunda partição, e aplica um filtro de desbloqueio a um limite entre a primeira partição e a segunda partição.
Description
Relatório Descritivo da Patente de Invenção para "CODIFI- CADOR, DECODIFICADOR, MÉTODO DE CODIFICAÇÃO E MÉTO- DO DE DECODIFICAÇÃO".
[0001] A presente invenção refere-se à codificação de vídeo e re- fere-se a, por exemplo, sistemas, componentes, e métodos de codifi- caçã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 necessidade constante de prover aperfeiçoamentos e otimizações na tecnologia de codificação de vídeo para processar uma quantidade sempre crescen- te de dados de vídeo digital em várias aplicações.
[0003] Note que a Literatura Não de Patente (NPL) 1 refere-se a um exemplo de um padrão convencional referente à tecnologia de co- dificação de vídeo acima descrita.
[0004] NPL 1: H.265 (ISO/IEC 23008-2 HEVC)/HEVC (Codificação de Vídeo de Alta Eficiência)
[0005] Referente a um método de codificação utilizado na tecnolo- gia de codificação de vídeo, uma proposta de um novo método é dese- jada para aperfeiçoamento em eficiência de codificação, aperfeiçoa- mento em qualidade da imagem, redução em quantidade de proces- samento, redução em escala do circuito, ou uma seleção apropriada de operações ou elementos tais como filtro, tamanho de bloco, vetor de movimento, imagem de referência, bloco de referência, etc.
[0006] A presente descrição provê configurações e métodos os quais podem prover vantagens para pelo menos um de aperfeiçoa- mento em eficiência de codificação, aperfeiçoamento em qualidade de imagem, redução em quantidade de processamento, redução em es- cala de circuito, aperfeiçoamento em velocidade de processamento, ou uma seleção apropriada de elementos ou operações. Note que a pre- sente descrição pode incluir uma configuração ou um método o qual pode prover vantagens outras que aquelas acima listadas.
[0007] Por exemplo, um codificador de acordo com um aspecto da presente descrição inclui um circuito e uma memória acoplada no cir- cuito. O circuito, em operação: particiona um bloco de uma imagem corrente a ser codificada em uma pluralidade de partições que inclui uma primeira partição e uma segunda partição que são adjacentes uma à outra; executa transformada ortogonal somente na primeira par- tição dentre a primeira partição e a segunda partição; e aplica um filtro de desbloqueio a um limite entre a primeira partição e a segunda parti- ção.
[0008] Algumas implementações de modalidades da presente descrição podem aperfeiçoar a eficiência de codificação, simplificar um processo de codificação / decodificação, aperfeiçoar uma velocidade de processamento de codificação / decodificação e eficientemente se- lecionar operações ou componentes apropriados utilizados em codifi- cação ou decodificação, tal como filtros apropriados, tamanhos de blo- co, vetores de movimento, imagens de referência, blocos de referên- cia, etc.
[0009] Benefícios e vantagens adicionais de acordo com um as- pecto da presente descrição ficarão aparentes da especificação e de- senhos. Os benefícios e/ou vantagens podem ser individualmente ob-
tidos por várias modalidades assim como características ilustradas na especificação e desenhos, e não todos os benefícios e/ou vantagens precisam ser providos de modo a obter um ou mais tais benefícios e/ou vantagens.
[0010] Deve ser notado que estes aspectos gerais ou específicos podem ser implementados como um sistema, um dispositivo, um mé- todo, um circuito integrado, um programa de computador, um meio de gravação ou qualquer sua combinação seletiva.
[0011] Uma configuração ou método de acordo com um aspecto da presente descrição pode prover vantagens para pelo menos um de, por exemplo, aperfeiçoamento em eficiência de codificação, aperfeiço- amento em qualidade de imagem, redução em quantidade de proces- samento, redução em escala de circuito, aperfeiçoamento em veloci- dade de processamento, ou uma seleção apropriada de elementos ou operações. Note que a configuração ou método pode prover vanta- gens outras que aquelas acima descritas.
[0012] Figura 1 é um diagrama de blocos que ilustra uma configu- raçã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 total 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 um exemplo de transformadas espacialmente variáveis (SVT).
[0019] Figura 6A é um diagrama conceitual que ilustra um exemplo de uma forma de filtro utilizado em um filtro de loop adaptável (ALF).
[0020] Figura 6B é um diagrama conceitual que ilustra outro exemplo de uma forma de filtro utilizado em um ALF.
[0021] Figura 6C é um diagrama conceitual que ilustra outro exemplo de uma forma de filtro utilizado 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 mo- dalidade.
[0030] Figura 15 é um fluxograma que ilustra um exemplo de fluxo de processamento básico de interpredição.
[0031] Figura 16 é um fluxograma que ilustra um exemplo de deri-
vaçã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 in- terpredição em modo inter normal.
[0035] Figura 20 é um fluxograma que ilustra um exemplo de in- terpredição em modo de mesclagem.
[0036] Figura 21 é um diagrama conceitual para ilustrar um exem- plo de um processo de derivação de vetor de movimento em modo de mesclagem.
[0037] Figura 22 é um fluxograma que ilustra um exemplo de pro- cesso de aumento de resolução de taxa de quadros (FRUC).
[0038] Figura 23 é um diagrama conceitual para ilustrar um exem- plo de coincidência de padrão (coincidência bilateral) entre dois blocos ao longo de uma trajetória de movimento.
[0039] Figura 24 é um diagrama conceitual para ilustrar um exem- plo de coincidência de padrão (coincidência de gabarito) entre um ga- barito em uma imagem corrente e um bloco em uma imagem de refe- rê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 mo- do 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 em 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 ge- raçã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 pro-
cesso de compensação de movimento de bloco sobreposto (OBMC).
[0057] Figura 36 é um diagrama conceitual para ilustrar um exem- plo 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 a geração de duas imagens de predição triangulares.
[0059] Figura 38 é um diagrama conceitual para ilustrar um mode- lo que assume movimento linear uniforme.
[0060] Figura 39 é um diagrama conceitual para ilustrar um exem- plo de um método de geração de imagem de predição utilizando 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 configu- raçã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 total 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 in- terprediçã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 fluxograma que ilustra um processo de de- terminar um filtro de desbloqueio.
[0069] Figura 48 é uma tabela que mostra condições para deter- minar um filtro de desbloqueio e capacidades do filtro de desbloqueio.
[0070] Figura 49 é um fluxograma que ilustra uma operação exe- cutada pelo codificador.
[0071] Figura 50 é um fluxograma que ilustra uma operação exe- cutada pelo decodificador.
[0072] Figura 51 é um diagrama de blocos que ilustra uma configu- ração total de um sistema de provisão de conteúdo para implementar um serviço de distribuição de conteúdo.
[0073] Figura 52 é um diagrama conceitual que ilustra um exemplo de uma estrutura de codificação em codificação escalável.
[0074] Figura 53 é um diagrama conceitual que ilustra um exemplo de uma estrutura de codificação em codificação escalável.
[0075] Figura 54 é um diagrama conceitual que ilustra um exemplo de uma tela de display de uma webpage.
[0076] Figura 55 é um diagrama conceitual que ilustra um exemplo de uma tela de display de uma webpage.
[0077] Figura 56 é um diagrama conceitual que ilustra um exemplo de um smartphone.
[0078] Figura 57 é um diagrama conceitual que ilustra um exemplo de uma configuração de um smartphone.
[0079] Por exemplo, quando uma imagem é codificada em uma base por bloco, uma transformada ortogonal tal como a transformada de frequência, é executada em um bloco da imagem. Isto permite uma compressão de dados efetiva.
[0080] Existe, no entanto, um caso onde um bloco inclui uma área que inclui somente valores considerados zeros. Em tal caso, a eficiên- cia do processamento pode ser reduzida devido à transformada orto- gonal executada em uma área inteira do bloco. Isto é porque o bloco pode ser particionado em uma pluralidade de partições e a transfor- mada ortogonal pode ser executada somente em uma ou mais parti-
ções dentre a pluralidade de partições. Consequentemente, a degra- dação em eficiência de processamento é suprimida.
[0081] No entanto, uma distorção pode ocorrer devido a uma dife- rença em processamento entre uma partição na qual a transformada ortogonal é executada e uma partição na qual a transformada ortogo- nal não é executada. Em outras palavras, a distorção pode ocorrer no bloco dependendo se ou não a transformada ortogonal é executada. Portanto, a qualidade de imagem pode ser degradada.
[0082] Em vista disso, um codificador de acordo com um aspecto da presente descrição inclui um circuito e uma memória acoplada no circuito. O circuito, em operação: particiona um bloco de uma imagem corrente a ser codificada em uma pluralidade de partições que inclui uma primeira partição e uma segunda partição que são adjacentes uma à outra; executa transformada ortogonal somente na primeira par- tição dentre a primeira partição e a segunda partição; e aplica um filtro de desbloqueio a um limite entre a primeira partição e a segunda parti- ção.
[0083] Com tal configuração, o codificador é capaz de apropria- damente reduzir a distorção em um bloco. Consequentemente, o codi- ficador é capaz de suprimir a degradação em qualidade da imagem enquanto suprimindo a redução em eficiência de processamento.
[0084] Por exemplo, o bloco é uma unidade de codificação que é quadrado em forma, a pluralidade de partições são duas partições que são a primeira partição e a segunda partição, cada uma da primeira partição e da segunda partição é uma partição que é de uma forma retangular diferente de uma forma quadrada, e o circuito particiona o bloco na pluralidade de partições, particionando o bloco horizontal- mente ou verticalmente.
[0085] Com tal configuração, o codificador é capaz de apropria- damente reduzir a distorção que ocorre verticalmente ou horizontal-
mente em uma unidade de codificação.
[0086] Por exemplo, o circuito ainda especifica o limite de acordo com se o bloco é particionado horizontalmente ou verticalmente.
[0087] Com tal configuração, o codificador é capaz de apropria- damente especificar um limite entre duas partições de acordo com um modo de partição, por meio disto apropriadamente aplicando um filtro de desbloqueio ao limite.
[0088] Por exemplo, o circuito particiona o bloco, executa a trans- formada ortogonal somente na primeira partição, e aplica o filtro de desbloqueio no limite em um modo de transformada de sub-bloco (SBT) o qual é um modo de operação definido em pelo menos um pa- drão de codificação que inclui codificação de vídeo versátil (VVC).
[0089] Com tal configuração, o codificador é capaz de aplicar, em um modo de SBT, um filtro de desbloqueio a um limite entre a primeira partição na qual a transformada ortogonal é executada e a segunda partição na qual a transformada ortogonal não é executada. Conse- quentemente, o codificador é capaz de reduzir a distorção que ocorre em um bloco devido ao modo de SBT.
[0090] Por exemplo, o circuito ainda determina um valor que cor- responde a cada um dos pixels na segunda partição para ser O.
[0091] Com tal configuração, o codificador é capaz de processar, como uma partição que inclui somente valores que indicam zeros, uma partição na qual a transformada ortogonal não é executada. Conse- quentemente, é possível reduzir uma quantidade de codificação.
[0092] Por exemplo, uma capacidade do filtro de desbloqueio a ser aplicado no limite é a mesma que uma capacidade de um filtro de des- bloqueio a ser aplicado a um limite entre dois blocos que são adjacen- tes um ao outro, pelo menos um dos dois blocos incluindo um coefici- ente não zero.
[0093] Com tal configuração, o codificador é capaz de aplicar um filtro de desbloqueio a um limite entre duas partições no mesmo modo como aplicado a um limite entre dois blocos.
[0094] Por exemplo, um decodificador de acordo com um aspecto da presente descrição inclui um circuito e uma memória acoplada no circuito. O circuito, em operação: particiona um bloco de uma imagem corrente a ser decodificada em uma pluralidade de partições que inclui uma primeira partição e uma segunda partição que são adjacentes uma à outra; executa uma transformada ortogonal inversa somente na primeira partição dentre a primeira partição e a segunda partição; e aplica um filtro de desbloqueio a um limite entre a primeira partição e a segunda partição.
[0095] Com tal configuração, o decodificador é capaz de apropria- damente reduzir a distorção em um bloco. Consequentemente, o de- codificador é capaz de suprimir a degradação em qualidade de ima- gem enquanto suprimindo a redução em eficiência de processamento.
[0096] Por exemplo, o bloco é uma unidade de codificação que é quadrado na forma, a pluralidade de partições são duas partições que são a primeira partição e a segunda partição, cada uma da primeira partição e da segunda partição é uma partição que é de uma forma retangular diferente de uma forma quadrada, e o circuito particiona o bloco na pluralidade de partições, particionando o bloco horizontal- mente ou verticalmente.
[0097] Com tal configuração, o decodificador é capaz de apropria- damente reduzir a distorção que ocorre verticalmente ou horizontal- mente em uma unidade de codificação.
[0098] Por exemplo, o circuito ainda especifica o limite de acordo com se o bloco é particionado horizontalmente ou verticalmente.
[0099] Com tal configuração, o decodificador é capaz de apropria- damente especificar um limite entre duas partições de acordo com um modo de partição, por meio disto aplicando apropriadamente um filtro de desbloqueio ao limite.
[00100] Por exemplo, o circuito particiona o bloco, executa a trans- formada ortogonal inversa somente na primeira partição, e aplica o fil- tro de desbloqueio ao limite em um modo de transformada de sub- bloco (SBT) o qual é um modo de operação definido em pelo menos um padrão de codificação que inclui codificação de vídeo versátil (VVC).
[00101] Com tal configuração, o decodificador é capaz de aplicar, em um modo de SBT, um filtro de desbloqueio a um limite entre a pri- meira partição na qual a transformada ortogonal inversa é executada e a segunda partição na qual a transformada ortogonal inversa não é executada. Consequentemente, o decodificador é capaz de reduzir a distorção que ocorre em um bloco devido ao modo de SBT.
[00102] Por exemplo, o circuito ainda determina um valor corres- pondente a cada um dos pixels na segunda partição para ser O.
[00103] Com tal configuração, o decodificador é capaz de proces- sar, como uma partição que inclui somente valores que indicam zeros, uma partição na qual a transformada ortogonal inversa não é executa- da. Consequentemente, é possível reduzir uma quantidade de codifi- cação.
[00104] Por exemplo, uma capacidade do filtro de desbloqueio a ser aplicada ao limite é a mesma que uma capacidade de um filtro de des- bloqueio a ser aplicado a um limite entre dois blocos que são adjacen- tes um ao outro, pelo menos um dos dois blocos, incluindo um coefici- ente não zero.
[00105] Com tal configuração, o decodificador é capaz de aplicar um filtro de desbloqueio a um limite entre duas partições no mesmo modo que aplicado a um limite entre dois blocos.
[00106] Por exemplo, um método de codificação de acordo com um aspecto da presente descrição inclui: particionar um bloco de uma imagem corrente a ser codificada em uma pluralidade de partições que inclui uma primeira partição e uma segunda partição que são adjacen- tes uma à outra; executar uma transformada ortogonal somente na primeira partição dentre a primeira partição e a segunda partição; e aplicar um filtro de desbloqueio a um limite entre a primeira partição e a segunda partição.
[00107] Com tal método, é possível apropriadamente reduzir a dis- torção em um bloco. Consequentemente, é possível suprimir em de- gradação na qualidade da imagem enquanto suprimindo a redução em eficiência de processamento.
[00108] Por exemplo, um método de decodificação de acordo com um aspecto da presente descrição inclui: particionar um bloco de uma imagem corrente a ser decodificada em uma pluralidade de partições que inclui uma primeira partição e uma segunda partição que são ad- jacentes uma à outra; executar uma transformada ortogonal inversa somente na primeira partição dentre a primeira partição e a segunda partição; e aplicar um filtro de desbloqueio a um limite entre a primeira partição e a segunda partição.
[00109] Com tal método, é possível apropriadamente reduzir a dis- torção em um bloco. Consequentemente, é possível suprimir a degra- dação em qualidade da imagem enquanto suprimindo a redução em eficiência de processamento.
[00110] Um codificador de acordo com um aspecto da presente descrição inclui, por exemplo, um particionador, um intrapreditor, um interpreditor, um controlador de predição, um transformador, um quan- tizador, um codificador de entropia, e um filtro de loop.
[00111] O particionador particiona uma imagem corrente a ser codi- ficada em um vídeo em blocos. O intrapreditor executa intrapredição de gerar, utilizando uma imagem de referência na imagem corrente, uma imagem de predição de um bloco corrente a ser codificado na imagem corrente. O interpreditor executa interpredição de gerar uma imagem de predição do bloco corrente, utilizando uma imagem de re- ferência em uma imagem de referência diferente da imagem corrente.
[00112] O controlador de predição controla a intrapredição executa- da pelo intrapreditor e a interpredição executada pelo interpreditor. O transformador transforma um sinal de erro de predição entre a imagem de predição gerada pelo intrapreditor ou o interpreditor e uma imagem do bloco corrente, para gerar um sinal coeficiente de transformada do bloco corrente. O quantizador quantiza o sinal de coeficiente de trans- formada. O codificador de entropia codifica o sinal de coeficiente de transformada quantizado.
[00113] O filtro de loop aplica um filtro de desbloqueio a um limite entre os blocos.
[00114] Por exemplo, o transformador, em operação, particiona um bloco de uma imagem corrente a ser codificada em uma pluralidade de partições que inclui uma primeira partição e uma segunda partição que são adjacentes uma à outra, e executa uma transformada ortogonal somente na primeira partição dentre da primeira partição e da segunda partição. O filtro de loop então aplica um filtro de desbloqueio a um |li- mite entre a primeira partição e a segunda partição.
[00115] Um decodificador de acordo com um aspecto da presente descrição é, por exemplo, um decodificador que decodifica um vídeo utilizando imagens de predição e inclui: um decodificador de entropia, um quantizador inverso, um transformador inverso, um intrapreditor, um interpreditor, um controlador de predição, um somador (um recons- trutor), e um filtro de loop.
[00116] O decodificador de entropia decodifica um sinal de coefici- ente de transformada quantizado de um bloco corrente a ser decodifi- cado em uma imagem corrente a ser decodificada no vídeo. O quanti- zador inverso quantiza inverso o sinal de coeficiente de transformada quantizado. O transformador inverso transforma inverso o sinal de coe- ficiente de transformada resultante para obter um sinal de erro de pre- dição do bloco corrente.
[00117] O intrapreditor executa intrapredição de gerar uma imagem de predição do bloco corrente utilizando uma imagem de referência na imagem corrente. O interpreditor executa interpredição de gerar uma imagem de predição do bloco corrente utilizando uma imagem de refe- rência em uma imagem de referência diferente da imagem corrente. O controlador de predição controla a intrapredição executada pelo intra- preditor e a interpredição executada pelo interpreditor.
[00118] O somador adiciona a imagem de predição gerada pelo in- trapreditor ou o interpreditor ao sinal de erro de predição, para recons- truir uma imagem do bloco corrente. O filtro de loop aplica um filtro de desbloqueio a um limite entre os blocos.
[00119] Por exemplo, o transformador inverso, em operação, parti- ciona um bloco de uma imagem corrente a ser decodificada em uma pluralidade de partições que inclui uma primeira partição e uma se- gunda partição que são adjacentes uma à outra, e executa uma trans- formada ortogonal inversa somente na primeira partição dentre a pri- meira partição e a segunda partição. O filtro de loop então aplica um filtro de desbloqueio a um limite entre a primeira partição e a segunda partição.
[00120] Mais ainda, estes aspectos gerais ou específicos podem ser implementados utilizando um sistema, um circuito integrado, um programa de computador, ou um meio de gravação legível por compu- tador não transitório tal como um CD-ROM, ou qualquer combinação de sistemas, métodos, circuitos integrados, programas de computador, e meios de gravação.
[00121] Daquiem diante, modalidades serão descritas com referên- cia 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 compo- nentes, etapas, a relação e ordem das etapas, etc., indicados nas mo- dalidades seguintes são meramente exemplos, e não pretendem limi- tar o escopo das reivindicações.
[00122] As modalidades de um codificador e um decodificador se- rão abaixo descritas. As modalidades são exemplos de um codificador e um decodificador aos quais os processos e/ou configurações apre- sentados na descrição de aspectos da presente descrição são aplicá- veis. Os processos e/ou configurações podem também ser implemen- tados em um codificador e um decodificador diferentes daqueles de acordo com as modalidades. Por exemplo, referindo aos processos e/ou configurações como aplicados nas modalidades, qualquer dos seguintes pode ser implementado.
[00123] (1) Qualquer dos componentes do codificador ou do decodi- ficador de acordo com as modalidades apresentadas na descrição de aspectos da presente descrição podem ser substituídos ou combina- dos com outro componente apresentado em outro local na descrição de aspectos da presente descrição.
[00124] (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 po- de ser substituído ou combinado com outra função ou processo apre- sentado em outro local na descrição de aspectos da presente descri- ção.
[00125] (3) Em métodos implementados pelo codificador ou o deco- dificador de acordo com as modalidades, mudanças discricionárias podem ser feitas tal como adição, substituição, e remoção de um ou mais dos processos incluídos no método. Por exemplo, qualquer pro- cesso no método pode ser substituído ou combinado com outro pro- cesso apresentado em outro local na descrição de aspectos da pre- sente descrição.
[00126] (4) Um ou mais componentes incluído no codificador ou no decodificador de acordo com modalidades podem ser combinados com um componente apresentado em outro local na descrição de as- pectos da presente descrição, podem ser combinados com um com- ponente que inclui uma ou mais funções apresentadas em outro local na descrição de aspectos da presente descrição, e podem ser combi- nados com um componente que implementa um ou mais processos implementados por um componente apresentado na descrição de as- pectos da presente descrição.
[00127] (5) Um componente que inclui uma ou mais funções do co- dificador 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 outro local na des- crição de aspectos da presente descrição, com um componente inclu- indo uma ou mais funções apresentadas em outro local na descrição de aspectos da presente descrição, ou com um componente que im- plementa um ou mais processos apresentados em outro local na des- crição de aspectos da presente descrição.
[00128] (6) Em métodos implementados pelo codificador ou o deco- dificador de acordo com as modalidades, qualquer dos processos in- cluídos no método pode ser substituído ou combinado com um pro- cesso apresentado em outro local na descrição de aspectos da pre- sente descrição ou com qualquer processo correspondente ou equiva- lente.
[00129] (7) Um ou mais processos incluídos em métodos implemen-
tados pelo codificador ou o decodificador de acordo com as modalida- des podem ser combinados com um processo apresentado em outro local na descrição de aspectos da presente descrição.
[00130] (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 ao decodificador de acordo com as mo- dalidades. Por exemplo, os processos e/ou configurações podem ser implementados em um dispositivo utilizado para um propósito diferente do codificador de imagem móvel ou do decodificador de imagem móvel descritos nas modalidades.
[00131] Codificador Primeiro, um codificador de acordo com uma modalidade será des- crito. A Figura 1 é um diagrama de blocos que ilustra uma configura- ção funcional do codificador 100 de acordo com a modalidade. O codi- ficador 100 é um codificador de vídeo o qual codifica um vídeo em uni- dades de um bloco.
[00132] Como ilustrado na Figura 1, o codificador 100 é um apare- lho o qual codifica uma imagem em unidades de um bloco, e inclui um divisor 102, subtrator 104, transformador 106, quantizador 108, codifi- cador 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.
[00133] O codificador 100 está implementado como, por exemplo, um processador genérico e memória. Neste caso, quando um progra- ma de software armazenado na memória é executado pelo processa- dor, o processador funciona como um divisor 102, subtrator 104, trans- formador 106, quantizador 108, codificador de entropia 110, quantiza- dor 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, so- mador 116, filtro de loop 120, intrapreditor 124, interpreditor 126, e controlador de predição 128.
[00134] Daqui em diante, um fluxo total de processos executado pelo codificador 100 está descrito, e então cada um dos elementos constituintes incluídos no codificador 100 será descrito. Fluxo Total de Processo de Codificação
[00135] A Figura 2 é um fluxograma que indica um exemplo de um processo de codificação total executado pelo codificador 100.
[00136] 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, 128x128 pixels) (Etapa Sa 1). O divisor 102 então seleciona um pa- drã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 a qual forma o padrão de divisão selecionado. O codificador 100 execu- ta, para cada um da pluralidade de blocos, as Etapas Sa 3 a Sa 9 pa- ra o bloco (que é um bloco corrente a ser codificado).
[00137] Em outras palavras, um processador de predição o qual inclui todos ou parte de intrapreditor 124, interpreditor 126, e controla- dor 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 re- ferido como um bloco corrente) (Etapa Sa 3).
[00138] 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 (tam- bém referido como um bloco de diferença) (Etapa Sa 4).
[00139] A seguir, o transformador 106 transforma o bloco de dife- rença e o quantizador 108 quantiza o resultado, para gerar uma plura- lidade 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 coeficientes.
[00140] A seguir, o codificador de entropia 110 codifica (especifica- mente, codifica em entropia) o bloco de coeficientes 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.
[00141] A seguir, o quantizador inverso 112 executa quantização inversa do bloco de coeficientes e o transformador inverso 114 execu- ta transformada inversa do resultado, para restaurar uma pluralidade de resíduos de predição (isto é, um bloco de diferença) (Etapa Sa 7).
[00142] A seguir, o somador 116 soma o bloco de predição ao 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 ima- gem reconstruída é gerada.
[00143] Quando a imagem reconstruída é gerada, o filtro de loop 120 executa filtragem da imagem reconstruída conforme necessário (Etapa Sa 9).
[00144] O codificador 100 então determina se a codificação da ima- gem inteira foi terminada (Etapa Sa 10). Quando determinando que a codificação ainda não foi terminada (Não na Etapa Sa 10), os proces- sos da Etapa Sa 2 são executados repetidamente.
[00145] 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 da pluralidade de padrões de di- visão, e, por exemplo, pode selecionar o sinal codificado obtenível por codificação de acordo com a padrão de divisão o qual gera o menor custo como um sinal codificado o qual é emitido.
[00146] Como ilustrado, os processos nas Etapas Sa 1 a Sa 10 são executados sequencialmente pelo codificador 100. Alternativa- mente, dois ou mais dos processos podem ser executados em parale- lo, os processos podem ser reordenados, etc. Divisor
[00147] O divisor 102 divide cada uma das imagens incluídas em um vídeo de entrada em uma pluralidade de blocos, e emite cada blo- co para o subtrator 104. Por exemplo, divisor 102 primeiro divide uma imagem em blocos de um tamanho fixo (por exemplo, 128x128). Ou- tros tamanhos de bloco fixos podem ser empregados. O bloco de ta- manho fixo é também referido como uma unidade de árvore de codifi- cação (CTU). O divisor 102 então divide cada bloco de tamanho fixo em blocos de tamanhos variáveis (por exemplo, 64x64 ou menores), com base em divisão de bloco de quadtree recursiva 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 os alguns dos blocos em uma imagem podem ser processa- dos em unidades de uma CU, uma PU, ou uma TU.
[00148] A Figura3é um diagrama conceitual que ilustra um exem- plo 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 quadtree, e as linhas tracejadas representam limites de bloco de blocos divididos por divisão de bloco de árvore binária.
[00149] — Aqui, o bloco 10 é um bloco quadrado que tem 128x128 pixels (bloco de 128x128). Este bloco de 128x128 10 é primeiro dividido em quatro blocos de 64x64 quadrados (divisão de bloco quadtree).
[00150] O bloco de 64x64 superior esquerdo é ainda verticalmente dividido em dois blocos de 32x64 retangulares, e o bloco de 32x64 es- querdo é ainda verticalmente dividido em dois blocos de 16x64 retan- gulares (divisão de bloco de árvore binária). Como um resultado, o bloco de 64x64 superior esquerdo é dividido em dois blocos de 16x64 11e12e um bloco de 32x64 13.
[00151] O boco 64*x64 superior direito é horizontalmente dividido em dois blocos de 64*x32 retangulares 14 e 15 (divisão de bloco de árvore binária).
[00152] O bloco de 64*64 inferior esquerdo é primeiro dividido em quatro blocos de 32x32 quadrados (divisão de bloco quadtree). O blo- co superior esquerdo e o bloco inferior direito entre os quatro blocos de 32x32 são adicionalmente divididos. O bloco de 32x32 superior es- querdo é verticalmente dividido em dois blocos de 16x32 retangulares, e o bloco de 16x32 direito é ainda dividido horizontalmente em dois blocos de 16x16 (divisão de bloco de árvore binária). O bloco de 32x32 inferior direito é horizontalmente dividido em dois blocos de 32x16 (divisão de bloco de árvore binária). Como um resultado, o blo- co de 64*64 inferior esquerdo é dividido no bloco de 16x32 16, dois blocos de 16x16 17 e 18, dois blocos de 32x32 19 e 20, e dois blocos de 32x16 21 e 22.
[00153] O bloco de 64*64 inferior direito 23 não é dividido.
[00154] Como acima descrito, na Figura 3, o bloco 10 é dividido em treze blocos de tamanho variável 11 até 23 com base em divisão de bloco quadtree recursivo e árvore binária. Este tipo de divisão é tam-
bém referido como divisão quadtree mais árvore binária (QTBT).
[00155] Deve ser notado que, na Figura 3, um bloco é dividido em quatro ou dois blocos (divisão de bloco 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). À 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
[00156] 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 configurara pelo divisor 102.
[00157] 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 sucessivas (CTU).
[00158] A Figura 4A é um diagrama conceitual que ilustra um exemplo de uma configuração de fatia. Por exemplo, uma imagem in- clui 11x8 CTUs e está 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 o final da imagem, e pode ser coincidido com qualquer um dos limites entre CTUs na imagem. A or- dem de processamento das CTUs em uma fatia (uma ordem de codifi- cação ou uma ordem de decodificação) é, por exemplo, uma ordem de escaneamento de rastreio. 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.
[00159] “Uma tela lado a lado é uma unidade de uma região retan- gular incluída em uma imagem. Cada uma das telas lado a lado pode ser atribuída com um número referido como um Tileld em ordem de escaneamento de rastreio.
[00160] A Figura 4B é um diagrama conceitual que indica um exemplo de uma configuração de telas lado a lado. Por exemplo, uma imagem inclui 11x8 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 or- dem de processamento no caso onde nenhuma tela lado a lado é utili- zada. Quando nenhuma tela lado a lado é utilizada, as CTUS em uma imagem são processadas em ordem de escaneamento de rastreio. Quando as telas lado a lado são utilizadas, pelo menos uma CTU em cada uma das telas lado a lado é processada em ordem de escanea- mento de rastreio. 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 fila de tela lado a lado 1 na direção da extremidade direita da primeira fila de tela lado a lado 1 e então começa da extremidade esquerda da segunda fila de tela lado a lado 1 na direção da extremidade direita da segunda fila de tela lado a lado 1.
[00161] 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
[00162] O subtrator 104 subtrai um sinal de predição (amostra de predição que é inserida do controlador de predição 128 abaixo indica- do) de um sinal original (amostra original) em unidades de um bloco inserido do divisor 102 e dividido por divisor 102. Em outras palavras, o subtrator 104 calcula os erros de predição (também referidos como resíduos) de um bloco a ser codificado (daqui em diante também refe- rido como um bloco corrente). O subtrator 104 então emite os erros de predição calculados (resíduos) para o transformador 106.
[00163] O sinal original é um sinal o qual foi inserido no codificador 100 e representa uma imagem de cada imagem incluída em um vídeo (por exemplo, um sinal de luma e dois sinais de croma). Daqui em di- ante, um sinal que representa uma imagem é também referido como uma amostra. Transformador
[00164] O transformador 106 transforma erros de predição de do- mínio espacial em coeficientes de transformada de domínio de fre- quê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 transforma- da de seno discreta (DST) nos erros de predição de domínio espacial. A DCT ou DST definida pode ser predefinida.
[00165] Deve ser notado que o transformador 106 pode adaptavel- mente selecionar um tipo de transformada dentre uma pluralidade de tipos de transformada, e transformar erros de predição em coeficientes de transformada utilizando uma função de base de transformada que corresponde ao tipo de transformada selecionado. Este tipo de trans- formada é também referida como uma transformada de múltiplos nú- cleos explícita (EMT) ou transformada múltipla adaptável (AMT).
[00166] 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 indi- ca 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 pluralida- de 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.
[00167] As informações que indicam se aplicar tal EMT ou AMT (re- feridas como, por exemplo, um sinalizador de AMT ou um sinalizador de AMT) e as informações que indicam o tipo de transformada seleci- onado 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 de 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 tela lado a lado, ou nível de CTU).
[00168] Além disso, o transformador 106 pode retransformar os co- eficientes de transformada (resultado de transformada). Tal retrans- formada é também referida como uma transformada secundária adap- tá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 4x4) incluído em um bloco de coeficientes de transformada que corresponde a um erro de intra- predição. As informações que indicam se aplicar NSST e 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 sina- lização de tais informações não necessariamente precisa ser executa- da no nível de CU, e podem ser executadas em outro nível (por exem- plo, 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).
[00169] O transformador 106 pode empregar uma transformada se- parável e uma transformada não separável. Uma transformada sepa- rável é um método no qual uma transformada é executada uma plura- lidade de vezes separadamente executando uma transformada para cada uma de um número de direções de acordo com o número de di- mensões de entradas. Uma transformada não separável é um método de executar uma transformada coletiva na qual duas ou mais dimen-
sões em entradas multidimensionais são coletivamente consideradas como uma única dimensão.
[00170] Em um exemplo de uma transformada não separável, quando uma entrada é um bloco de 4x4, o bloco de 4x4 é considerado como uma única rede que inclui 16 elementos, e a transformada aplica uma matriz de transformada de 16x16 na rede.
[00171] Em outro exemplo de uma transformada não separável, um bloco de entrada de 4x4 é considerado como uma única rede que in- clui 16 elementos, e então uma transformada (transformada de hyper- cube-givens) na qual uma revolução givens é executada na rede uma pluralidade de vezes pode ser executada.
[00172] 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 comutados. Exemplos incluem transformadas espacialmente variáveis (SVT). Em SVT, como ilustrado na Figura 5B, as CUs são divididas em duas regiões iguais horizontalmente ou verti- calmente, 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 exem- plo, somente uma destas duas regiões na CU é transformada, e a ou- tra não é transformada. No entanto, ambas estas 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 exem- plo, a CU pode ser dividida em quatro regiões iguais, ou informações que indicam a divisão podem ser codificadas separadamente e ser si- nalizadas no mesmo modo que a divisão de CU. Deve ser notado que a SVT é também referida como transformada de sub-bloco (SBT). Quantizador
[00173] O quantizador 108 quantiza os coeficientes de transforma- da emitidos do transformador 106. Mais especificamente, o quantiza-
dor 108 escaneia, em uma ordem de escaneamento determinada, os coeficientes de transformada do bloco corrente, e quantiza os coefici- entes de transformada escaneados com base em parâmetros de quan- tização (QP) que correspondem aos coeficientes de transformada. O quantizador 108 então emite os coeficientes de transformada quanti- zados (daqui em diante também referidos como coeficientes quantiza- dos) do bloco corrente para o codificador de entropia 110 e o quanti- zador inverso 112. A ordem de escaneamento determinada pode ser predeterminada.
[00174] Uma ordem de escaneamento determinada é uma ordem para quantizar / quantizar inverso os coeficientes de transformada. Por exemplo, uma ordem de escaneamento determinada pode ser definida como ordem de frequência ascendente (de baixa para alta frequência) ou ordem de frequência descendente (de alta para baixa frequência).
[00175] Um parâmetro de quantização (QP) é um parâmetro que define uma etapa de quantização (largura de quantização). Por exem- plo, quando o valor do parâmetro de quantização aumenta, 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.
[00176] Além disso, uma matriz de quantização pode ser utilizada para quantização. Por exemplo, diversos tipos de matrizes de quanti- zação podem ser utilizados correspondentemente a tamanhos de transformada de frequência tais como modos de predição de 4x4 e 8x8, tal como intrapredição e interpredição, e componentes de pixel tais como componentes de pixel de luma e de 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 utilizar outras expres- sões, tal como arredondamento e escalagem e pode empregar arre- dondamento e escalagem. Os intervalos e níveis determinados podem ser predeterminados.
[00177] 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 ca- racterísticas de uma imagem pode ser ajustada diretamente ajustando uma matriz de quantização. Este caso, no entanto, tem uma desvanta- gem de aumentar uma quantidade de codificação para codificar a ma- triz de quantização.
[00178] Existe um método para quantizar um coeficiente de alta fre- quê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.
[00179] 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
[00180] O codificador de entropia 110 gera um sinal codificado (flu- xo de bits codificado) com base em coeficientes quantizados os quais foram inseridos do quantizador 108. Mais especificamente, o codifica- dor de entropia 110, por exemplo, binariza coeficientes quantizados, e aritmeticamente codifica o sinal binário, e emite um fluxo de bits ou sequência comprimido. Quantizador Inverso
[00181] O quantizador inverso 112 quantiza inverso coeficientes quantizados os quais foram inseridos do quantizador 108. Mais especi- ficamente, o quantizador inverso 112 quantiza inverso, em uma ordem de escaneamento determinada, os coeficientes quantizados do bloco corrente. O quantizador inverso 112 então emite os coeficientes de transformada quantizados inversos do bloco corrente para o transfor- mador inverso 114. A ordem de escaneamento determinada pode ser predeterminada. Transformador Inverso
[00182] O transformador inverso 114 restaura os erros de predição (resíduos) transformando inverso os coeficientes de transformada os quais foram inseridos do quantizador inverso 112. Mais especificamen- te, o transformador inverso 114 restaura os erros de predição do bloco corrente aplicando uma transformada inversa que corresponde à trans- formada aplicada pelo transformador 106 nos coeficientes de trans- formada. O transformador inverso 114 então emite os erros de predi- ção restaurados para o somador 116.
[00183] Deve ser notado que como informações são perdidas em 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 quan- tização. Somador
[00184] O somador 116 reconstrói o bloco corrente somando erros de predição os quais foram inseridos do transformador inverso 114 e amostras de predição as quais foram inseridas do controlador de pre- dição 128. O somador 116 então emite o bloco reconstruído para a memória de blocos 118 e filtro de loop 120. Um bloco reconstruído é também referido como um bloco decodificado local. Memória de Blocos
[00185] A memória de blocos 118 é, por exemplo, um armazena-
mento 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 arma- zena os blocos reconstruídos emitidos do somador 116. Memória de Quadros
[00186] A memória de quadros 122 é, por exemplo, um armazena- mento para armazenar imagens de referência para utilização em inter- predição, e é também referida como um armazenamento temporário de quadros. Mais especificamente, a memória de quadros 122 arma- zena bloco reconstruídos filtrados pelo filtro de loop 120. Filtro de Loop
[00187] O filtrode loop 120 aplica um filtro de loop a blocos recons- truí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 em 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).
[00188] Em um ALF, um filtro de erro de menor quadrado para re- mover artefatos de compressão é aplicado. Por exemplo, um filtro se- lecionado dentre uma pluralidade de filtros com base na direção e ati- vidade de gradientes locais é aplicado para cada um dos sub-blocos de 2x2 no bloco corrente.
[00189] Mais especificamente, primeiro, cada sub-bloco (por exem- plo, cada sub-bloco de 2x2) é categorizado em uma dentre uma plura- lidade de classes (por exemplo, quinze ou vinte e cinco classes). À classificação do sub-bloco está baseada em direcionalidade e ativida- de de gradiente. Por exemplo, índice de classificação C (por exemplo, C=5D+A) é derivado com base na direcionalidade de gradiente D (por exemplo, O a 2 ou O a 4) e atividade de gradiente A (por exemplo, O a 4). Então, com base no índice de classificação C, cada sub-bloco é categorizado em uma dentro de uma pluralidade de classes.
[00190] Por exemplo, a direcionalidade de gradiente D é calculada comparando 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.
[00191] O ffilttoa ser utilizado para cada sub-bloco é determinado dentre a pluralidade de filtros com base no resultado de tal categoriza- ção.
[00192] A forma de filtro a ser utilizado em um ALF é, por exemplo, uma forma de filtro simétrica circular. A Figura 6A até Figura 6C ilus- tram exemplos de formas de filtros utilizados em ALFs. A Figura 6A ilustra um filtro em forma de diamante de 5x5, a Figura 6B ilustra um filtro em forma de diamante de 7x7, e a Figura 6C ilustra um filtro em forma de diamante de 9x9. As informações que indicam a forma de filtro são normalmente sinalizadas no nível de imagem. Deve ser nota- do 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ên- cia, nível de fatia, nível de telas lado a lado, nível de CTU, ou nível de CU).
[00193] O LIGADO ou DESLIGADO 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 a luma pode ser feita no nível de CU, e a decisão de se aplicar ALF a croma pode ser feita no nível de imagem. As in- formações que indicam LIGADO ou DESLIGADO do ALF são normal- mente sinalizadas no nível de imagem ou no nível de CU. Deve ser notado que a sinalização de informações que indicam LIGADO ou DESLIGADO do ALF não necessariamente precisam ser executadas em nível de imagem ou nível de CU, e podem ser executadas em ou-
tro 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).
[00194] O conjunto de coeficientes para a pluralidade de filtros se- lecionáveis (por exemplo, quinze ou até vinte e cinco filtros) é normal- mente sinalizado no nível de imagem. Deve ser notado que a sinaliza- ção do conjunto de coeficientes não necessariamente precisar ser executada no nível de imagem, e pode ser executada em outro nível (por exemplo, no nível da 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
[00195] Em um filtro de desbloqueio, o filtro de loop 120 executa um processo de filtro sobre um limite de bloco em uma imagem reconstru- ída de modo a reduzir a distorção a qual ocorre no limite de bloco.
[00196] A Figura7 é um diagrama de blocos que ilustra um exem- plo de uma configuração específica do filtro de loop 120 o qual funcio- na como um filtro de desbloqueio.
[00197] O filtrode loop 120 inclui: determinador de limite 1201; de- terminador de filtro 1203; executor de filtragem 1205; determinador de processo 1208; determinador de características de filtro 1207; e comu- tadores 1202, 1204, e 1206.
[00198] O determinador de limite 1201 determina se um pixel a ser filtrado em desbloqueio (isto é, um pixel corrente) está presente ao re- dor de um limite de bloco. O determinador de limite 1201 então emite o resultado de determinação para o comutador 1202 e determinador de processamento 1208.
[00199] 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 blo-
co, o comutador 1202 emite uma imagem não filtrada para o comuta- dor 1206.
[00200] O determinador de filtro 1203 determina se executar filtra- gem 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.
[00201] 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 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.
[00202] Quando obtendo a imagem não filtrada através dos comu- tadores 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 de características de filtro 1207. O executor de filtragem 1205 então emite o pixel filtrado para o comuta- dor 1206.
[00203] Sob controle pelo determinador de processamento 1208, o comutador 1206 seletivamente emite um pixel o qual não foi filtrado em desbloqueio e um pixel o qual foi filtrado em desbloqueio pelo exe- cutor de filtragem 1205.
[00204] O determinador de processamento 1208 controla o comu- tador 1206 com base nos resultados de determinações feitas pelo de- terminador de limite 1201 e determinador de filtro 1203. Em outras pa- lavras, o determinador de processamento 1208 faz com que o comu- tador 1206 emita o pixel o qual foi filtrado em desbloqueio quando o determinador de limite 1201 determinou que o pixel corrente está pre-
sente ao redor do limite de bloco e o determinador de filtro 1203 de- terminou 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 em desbloqueio. Uma imagem filtrada é emitida do comutador 1206 repe- tindo a saída de um pixel neste modo.
[00205] A Figura 8 é um diagrama conceitual que indica um exem- plo de um filtro de desbloqueio que tem uma característica de filtragem simétrica com relação a um limite de bloco.
[00206] 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'O a q'2 executando, por exemplo, computações de acordo com a expressões abaixo. q'0 = (p1 + 2x p0+2xq0g0+2xq91+qg2+4)/8 q'1 = (po +q0 + q1 + q2+2)/4 q'2 = (pO + q0 + q1+3xg2+2xq03+4)/8
[00207] Deve ser notado que, nas expressões acima, pO 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 de pixel de um pixel vizinho q3 localizado no lado oposto do pixel q2 com relação ao limite de bloco. Além disso, no lado direito de cada uma das expressões, coeficientes os quais são multiplicados pelos respectivos valores de pixel dos pixels a serem uti- lizados para filtragem de desbloqueio são coeficientes de filtro.
[00208] Mais ainda, na filtragem de desbloqueio, clipagem pode ser executada de modo que os valores de pixel calculados não sejam ajustados acima de um valor limite. No processo de clipagem, os valo-
res de pixel calculados de acordo com as expressões acima são clipa- dos para um valor obtido de acordo com "um valor de pixel de compu- tação + 2 x um valor limite" utilizando o valor limite determinado com base em um parâmetro de quantização. Deste modo, é possível impe- dir uma suavização excessiva.
[00209] A Figura 9 é um diagrama conceitual para ilustrar um limite de bloco sobre o qual um processo de filtro de desbloqueio é executa- do. A Figura 10 é um diagrama conceitual que indica exemplos de va- lores de Bs.
[00210] Olimite de bloco sobre o qual o processo de filtro de des- bloqueio é executado é, por exemplo, um limite entre unidades de pre- dição (PU) que tem blocos de pixel de 8x8 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 filas ou quatro colunas. Primeiro, os valores de força de limite (de Bs) são de- terminados como indicado na Figura 10 para o bloco P e bloco Q ilus- trados na Figura 9.
[00211] 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 diferentes forças é determinado. O proces- so de filtro de desbloqueio para um sinal de croma é executado quan- do 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 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)
[00212] 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.
[00213] O processador de predição gera uma imagem de predição de um bloco corrente (Etapa Sb 1). Esta imagem de predição é tam- bém referida como um sinal de predição ou um bloco de predição. De- ve ser notado que o sinal de predição é, por exemplo, um sinal de in- trapredição ou um sinal de interpredição. Especificamente, o proces- sador de predição gera a imagem de predição do bloco corrente utili- zando 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 coeficientes, restauração de um bloco de diferen- ça, e geração de um bloco de imagem decodificado.
[00214] A imagem reconstruída pode ser, por exemplo, uma ima- gem em uma imagem de referência, ou uma imagem de um bloco co- dificado em uma imagem corrente a qual é a imagem que inclui o blo- co corrente. O bloco codificado na imagem corrente é, por exemplo, um bloco vizinho do bloco corrente.
[00215] A Figura 12 é um fluxograma que ilustra outro exemplo de um processo executado pelo processador de predição do codificador
100.
[00216] 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 até o 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.
[00217] 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 uma ima- gem de predição final pode ser feita calculando um custo para cada uma das imagens de predição geradas com base no custo. Alternati- vamente, a seleção da imagem de predição pode ser feita com base em um parâmetro o qual é utilizado em um processo de codificação. O codificador 100 pode transformar as informações para identificar uma imagem de predição selecionada, um método, ou um modo em um si- nal 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 ilus- trado na Figura 12, o processador de predição seleciona qualquer das imagens de predição após as imagens de predição serem geradas uti- lizando 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.
[00218] Por exemplo, o primeiro método e o segundo método po- dem ser intrapredição e interpredição, respectivamente, e o processa- dor 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.
[00219] A Figura 13 é um fluxograma que ilustra outro exemplo de um processo executado pelo processador de predição do codificador
100.
[00220] — 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.
[00221] 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 pro- cessador de predição calcula o custo C para cada uma da imagem de intrapredição e da imagem de interpredição. O custo C pode ser calcu- lado de acordo com uma expressão de um modelo de otimização R-D, por exemplo, C = D + A x 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 multi- plicador de acordo com o método de multiplicador de Lagrange.
[00222] 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
[00223] O intrapreditor 124 gera um sinal de predição (sinal de in- trapredição) executando intrapredição (também referida como predição intraquadro) do bloco corrente referindo a um bloco ou blocos na ima- gem corrente e armazenada na memória de blocos 118. Mais especifi- camente, o intrapreditor 124 gera um sinal de intrapredição executan- do 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 controlador de predição 128.
[00224] Por exemplo, o intrapreditor 124 executa intrapredição utili- zando 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.
[00225] Os um ou mais modos de predição não direcionais incluem, por exemplo, o modo de predição plana e modo de predição DC defi- nidos no padrão H.265 / codificação de vídeo de alta eficiência (HEVC).
[00226] A 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 in- trapredição no total que podem ser utilizados em intrapredição (dois modos de predição não direcionais e sessenta e cinco modos de pre- dição direcionais). As setas sólidas representam as trinta e três dire- ções definidas no padrão H.265/HEVC, e as setas tracejadas repre- sentam as trinta e duas direções adicionais (os dois modos de predi-
ção não direcionais não estão ilustrados na Figura 14).
[00227] 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 componente 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.
[00228] O intrapreditor 124 pode corrigir valores de pixel intrapredi- tos com base em gradientes de pixel de referência horizontal / vertical. A intrapredição acompanhada por este tipo de correção é também re- ferida como combinação intrapredição dependente de posição (PDPC). As informações que indicam se aplicar PDPC (referidas co- mo, por exemplo, um sinalizador de PDPC) são normalmente sinaliza- das no nível de CU. Deve ser notado que a sinalização de tais infor- mações 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ên- cia, nível de imagem, nível de fatia, nível de telas lado a lado, ou nível de CTU). Interpreditor
[00229] O interpreditor 126 gera um sinal de predição (sinal de in- terprediçã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á armazenada na memória de quadros 122. A interpredição é exe- cutada em unidades de um bloco corrente ou um sub-bloco corrente (por exemplo, um bloco de 4x4) no bloco corrente. Por exemplo, o in- terpreditor 126 executa estimativa de movimento em uma imagem de referência para o bloco corrente ou o sub-bloco corrente, e descobre um bloco ou um sub-bloco de referência o qual melhor coincide com o bloco corrente ou o sub-bloco corrente. O interpreditor 126 então ob- tém informações de movimento (por exemplo, um vetor de movimento) as quais compensam um movimento ou uma mudança do bloco ou do sub-bloco de referência para o bloco ou o sub-bloco corrente. O inter- preditor 126 gera um sinal de interpredição do bloco ou do sub-bloco corrente executando compensação de movimento (ou predição de mo- vimento) com base nas informações de movimento. O interpreditor 126 emite o sinal de interpredição gerado para o controlador de predição
128.
[00230] As informações de movimento utilizadas em compensação de movimento podem ser sinalizadas como sinais de interpredição em várias formas. Por exemplo, um vetor de movimento pode ser sinaliza- do. 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
[00231] A Figura 15 é um fluxograma que ilustra um exemplo de fluxo de processamento básico de interpredição.
[00232] Primeiro, o interpreditor 126 gera um sinal de predição (Etapas Se 1a 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).
[00233] 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 com- pensaçã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 candidato de vetor de movimento (candidato de MV) (Etapa Se 1) e derivação de um MV (Etapa Se 2). A seleção do candidato de MV é feita, por exemplo, selecionando pelo menos um candidato de MV de uma lista de candidatos de MV. Alternativamente, na derivação de um MV, o interpreditor 126 pode ainda selecionar pelo menos um candida- to de MV do pelo menos um candidato de MV, e determinar o pelo menos um candidato de MV selecionado como o MV para o bloco cor- rente. 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 de MV selecionado. Deve ser notado que a estimativa em uma região de imagem de referência pode ser referida como estimativa de movimen- to.
[00234] Além disso, através das Etapas Se 1 a Se 3 serem execu- tadas 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
[00235] A Figura 16 é um fluxograma que ilustra um exemplo de derivação de vetores de movimento.
[00236] 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 co- dificadas como um parâmetro de predição, e são sinalizadas. Em ou- tras palavras, as informações de movimento codificadas são incluídas em um sinal codificado (também referido como um fluxo de bits codifi- cado).
[00237] —Alternativamente, o interpreditor 126 deriva um MV em um modo no qual as informações de movimento não são codificadas. Nes- te caso, nenhuma informação de movimento está incluída em um sinal codificado.
[00238] Aqui, os modos de derivação de MV podem incluir um mo-
do inter normal, um modo de mesclagem, um modo de FRUC, um mo- do 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 (es- pecificamente, 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 in- cluem 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.
[00239] A Figura 17 é um fluxograma que ilustra outro exemplo de derivação de vetores de movimento.
[00240] 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 pre- dição, e é sinalizada. Em outras palavras, a diferença de MV codifica- da é incluída em um sinal codificado. A diferença de MV é a diferença entre o MV do bloco corrente e o preditor de MV.
[00241] —Alternativamente, o interpreditor 126 deriva um MV em um modo no qual nenhuma diferença de MV é codificada. Neste caso, ne- nhuma diferença de MV codificada está incluída em um sinal codifica- do.
[00242] — 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. os 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 está codificada incluem o modo de FRUC, o modo de mesclagem, o modo afim (especificamente, o modo de mesclagem afim), etc. O interpredi- tor 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
[00243] 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 sã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 descritos posteriormente em detalhes. Simplesmente, o modo de mesclagem é um modo para derivar um MV de um bloco cor- rente 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 mo- do afim é um modo para derivar, como um MV de um bloco de corren- te, um vetor de movimento de cada um de uma pluralidade de sub- blocos incluídos no bloco de corrente, assumindo uma transformada afim.
[00244] Mais especificamente, como ilustrado quando as informa- ções de modo de interpredição indicam O (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 inter- predição indicam 2 (2 em Sf 1), o interpreditor 126 deriva um vetor de movimento utilizando o modo afim (especificamente, o modo de mes- clagem afim) (Sf 4). Quando as informações de modo de interpredição indicam 3 (3 em Sf 1), o interpreditor 126 deriva um vetor de movi- mento 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
[00245] O modo inter normal é um modo de interpredição para deri- var um MV de um bloco corrente com base em um bloco similar à ima- gem do bloco corrente de uma região de imagem de referência especi- ficada por um candidato de MV. Neste modo inter normal, uma dife- rença de MV é codificada.
[00246] A Figura 19 é um fluxograma que ilustra um exemplo de interpredição em modo inter normal.
[00247] — Primeiro, o interpreditor 126 obtém uma pluralidade de can- didatos de MV 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 ou- tras palavras, o interpreditor 126 gera uma lista de candidatos de MV.
[00248] A seguir, o interpreditor 126 extrai N (um inteiro de 2 ou maior) candidatos de MV da pluralidade de candidatos de MV 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 candidatos de MV.
[00249] 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 referi- do 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.
[00250] A seguir, o interpreditor 126 deriva um MV de um bloco cor- rente 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 co- mo uma diferença de MV. Deve ser notado que a imagem de referên- cia codificada é uma imagem que inclui uma pluralidade de blocos os quais foram reconstruídos após serem codificados.
[00251] 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 co- dificada (Etapa Sg 5). Deve ser notado que a imagem de predição é um sinal de interpredição como acima descrito.
[00252] — Além disso, informações que indicam o modo de interpredi- ção (modo inter normal no exemplo acima) utilizado para gerar a ima- gem de predição são, por exemplo, codificadas como um parâmetro de predição.
[00253] Deve ser notado que a lista de candidatos de MV pode também ser utilizada como uma lista para utilização em outro modo. Além disso, os processos relativos à lista de candidatos de MV podem ser aplicados a processos relativos à lista para utilização em outro modo. Os processos relativos à lista de candidatos de MV incluem, por exemplo, extração ou seleção de um candidato de MV da lista de can- didatos de MV, reordenação de candidatos de MV, ou apagamento de um candidato de MV. Derivação de MV > Modo de Mesclagem
[00254] O modo de mesclagem é um modo de interpredição para selecionar um candidato de MV de uma lista de candidatos de MV co-
mo um MV de um bloco corrente, por meio disto derivando o MV.
[00255] A Figura 20 é um fluxograma que ilustra um exemplo de interpredição no modo de mesclagem.
[00256] Primeiro, o interpreditor 126 obtém uma pluralidade de can- didatos de MV 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 ou- tras palavras, o interpreditor 126 gera uma lista de candidatos de MV.
[00257] A seguir, o interpreditor 126 seleciona um candidato de MV da pluralidade de candidatos de MV 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 candidato de MV selecionado.
[00258] 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 co- dificada (Etapa Sh 3).
[00259] Além disso, informações que indicam o modo de interpredi- ção (modo de mesclagem no exemplo acima) utilizado para gerar a imagem de predição e incluído no sinal codificado são, por exemplo, codificadas como um parâmetro de predição.
[00260] 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.
[00261] Primeiro, uma lista de candidatos de MV na qual 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 localiza- dos espacialmente circundando um bloco corrente; preditores de MV temporalmente vizinhos, os quais são MVs de blocos circundantes so-
bre os quais a posição de um bloco corrente em uma imagem de refe- rência codificada é projetada; preditores de MV combinados os quais são MVs gerados combinando o valor de MV de um preditor de MV espaci- almente 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.
[00262] A seguir, um preditor de MV é selecionado de uma plurali- dade de preditores de MV registrados em uma lista de preditores de MV, e o preditor de MV selecionado é determinado como o MV de um bloco corrente.
[00263] 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.
[00264] 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 estar configura- da de tal modo que alguns dos tipos dos preditores de MV no diagra- ma podem não estar incluídos, ou que um ou mais preditores de MV outros que os tipos de preditores de MV no diagrama estão incluídos.
[00265] “Um MV final pode ser determinado executando um proces- so de refinamento de vetor de movimento de decodificador (DMVR) a ser posteriormente descrito utilizando o MV do bloco corrente derivado no modo de mesclagem.
[00266] Deve ser notado que os candidatos de preditor de MV são candidatos de MV acima descritos, e a lista de preditores de MV é a lista de candidatos de MV acima descrita. Deve ser notado que a lista de candidatos de MV 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
[00267] As informações de movimento podem ser derivadas no lado do decodificador sem serem sinalizadas do lado de codificador. Deve ser notado que, como acima 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 esti- mativa 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.
[00268] Aqui, um modo para executar estimativa de movimento no lado do decodificador está 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 aumento de resolução de taxa de quadros (FRUC).
[00269] Um exemplo de um processo de FRUC na forma de um flu- xograma está ilustrado na Figura 22. Primeiro, uma lista de uma plura- lidade de candidatos cada um tendo um preditor de vetor de movimen- to (MV) (isto é, uma lista de candidatos de MV, 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 tempo- ralmente são vizinhos de um bloco corrente (Etapa Si 1). A seguir, um melhor candidato de MV é selecionado da pluralidade de candidatos de MV registrados na lista de candidatos de MV (Etapa Si 2). Por exemplo, os valores de avaliação dos respectivos candidatos de MV incluídos na lista de candidatos de MV são calculados, e um candidato de MV é selecionado com base nos valores de avaliação. Com base nos candidatos de vetor de movimento selecionados, um vetor de mo- vimento para o bloco corrente é então derivado (Etapa Si 4). Mais es- pecificamente, por exemplo, o candidato de vetor de movimento sele- cionado (melhor candidato de MV) é derivado diretamente como o ve- tor 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ão em uma região circundante de uma posição em uma imagem de referência onde a posição na imagem de referên- cia corresponde ao candidato de vetor de movimento selecionado. Em outras palavras, uma estimativa que utiliza a coincidência de padrão e os valores de avaliação pode ser executada na região circundante do melhor candidato de MV, e quando existe um MV que gera um melhor valor de avaliação, o melhor candidato de MV 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 configu- ração na qual nenhum tal processo para atualizar o melhor candidato de MV para o MV que tem um melhor valor de avaliação é executado é também possível.
[00270] 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 co- dificada (Etapa Si 5).
[00271] Um processo similar pode ser executado em unidades de um sub-bloco.
[00272] 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.
[00273] A diferença entre os valores de pixel das duas imagens re- construídas pode ser utilizada para um valor de avaliação dos vetores de movimento. Deve ser notado que o valor de avaliação pode ser cal-
culado utilizando informações outras que o valor da diferença.
[00274] A seguir, um exemplo de coincidência de padrão está des- crito em detalhes. Primeiro, um candidato de MV incluído em uma lista de candidatos de MV (por exemplo, uma lista de mesclagem) é seleci- onado como um ponto de partida de estimativa pela coincidência de padrão. Por exemplo, como a coincidência de padrão, ou uma primeira coincidência de padrão ou uma segunda coincidência de padrão pode ser utilizada. A primeira coincidência de padrão e a segunda coinci- dência de padrão são também referidas como coincidência bilateral e coincidência de gabarito, respectivamente. Derivação de MV > FRUC > Coincidência Bilateral
[00275] Na primeira coincidência de padrão, a coincidência de pa- drão é executada entre dois blocos ao longo de uma trajetória de mo- vimento de um bloco corrente os quais são dois blocos em duas dife- rentes imagens de referência. Consequentemente, na primeira coinci- dência de padrão, uma região em outra imagem de referência ao longo da trajetória de movimento do bloco corrente é utilizada como uma re- gião determinada para calcular o valor de avaliação do candidato aci- ma descrito. A região determinada pode ser predeterminada.
[00276] A Figura 23 é um diagrama conceitual para ilustrar um exemplo da primeira coincidência de padrão (coincidência bilateral) entre os dois blocos nas duas imagens de referência ao longo da traje- tória de movimento. Como ilustrado na Figura 23, na primeira coinci- dência de padrão, dois vetores de movimento (MVO, MV1) são deriva- dos estimando um par o qual melhor coincide entre os pares nos dois blocos nas duas diferentes imagens de referência (RefO, Ref1), os quais são os 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 candidato de MV 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 candidato de MV em um intervalo de tempo de exibição é derivado para o bloco corrente, e um valor de avaliação é calculado utilizando o valor da diferença obtida. É possível selecionar, como o MV final, o candidato de MV o qual gera o melhor valor de avaliação entre a pluralidade de candidatos de MV, e o qual é provável produzir bons resultados.
[00277] Na suposição de uma trajetória de movimento contínua, os vetores de movimento (MVO, MV1) que especificam os dois blocos de referência são proporcionais às distâncias temporais (TDO, TD1) entre a imagem corrente (Cur Pic) e as duas imagens de referência (Ref0, Ref1). Por exemplo, quando a imagem corrente está temporalmente localizada entre as duas imagens de referência e as distâncias tempo- rais da imagem corrente para as respectivas duas imagens de referên- cia são iguais uma à outra, vetores de movimento bidirecionais simé- tricos em espelho são derivados na primeira coincidência de padrão. Derivação MV > FRUC> Coincidência de Gabarito
[00278] Na segunda coincidência de padrão (coincidência de gaba- rito), a coincidência de padrão é 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 vizi- nho é, por exemplo, bloco(s) vizinho(s) superior e/ou esquerdo)). Con- sequentemente, na segunda coincidência de padrão, o bloco vizinho ao bloco corrente na imagem corrente é utilizado como a região de- terminada para calcular o valor de avaliação do candidato acima des- crito.
[00279] A Figura 24 é um diagrama conceitual para ilustrar um exemplo de coincidência de padrão (coincidência de gabarito) 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ão, o vetor de movimento do bloco corrente (Cur block) é derivado estimando, na imagem de referência (RefO0), o bloco o qual melhor coincide com o bloco vizinho ao 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 e acima quanto ou à esquerda ou acima e uma imagem reconstruída a qual está em uma região correspondente na imagem de referência codificada (Ref0) e é especificada por um candidato de MV é derivada, um valor de avaliação é calculado utilizando o valor da di- ferença obtida, e o candidato de MV a qual gera o melhor valor de ava- liação entre uma pluralidade de candidatos de MV é selecionado como o melhor candidato de MV.
[00280] Tais informações que indicam se aplicar o modo de FRUC (referidas 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), informações que indicam um método de coincidência de padrão apli- cável (ou a primeira coincidência de padrão ou a segunda coincidência de padrão) 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 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
[00281] 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.
[00282] 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 4x4. Aqui, o vetor de movimento vo em um ponto de controle de canto supe- rior esquerdo no bloco corrente é derivado com base em um vetor de movimento de um bloco vizinho, e do mesmo modo, o vetor de movi- mento v, no ponto de controle de canto superior direito no bloco cor- rente é derivado com base em um vetor de movimento de um sub- bloco vizinho. Dois vetores de movimento vo e v: podem ser projetados de acordo com uma expressão (1A) abaixo indicada, e vetores de mo- vimento (vx, vy) para os respectivos sub-blocos no bloco corrente po- dem ser derivados. Math. 1 v.= Grx Yo) var ver), +Yox : Ww w (14) vw= Gu Yo), ax Yo), + w w
[00283] —Aqui,xey indicam a posição horizontal e a posição vertical do sub-bloco, respectivamente, e w indica um coeficiente ponderado determinado. O coeficiente ponderado determinado pode ser prede- terminado.
[00284] Tais informações que indicam o modo afim (por exemplo, referidas como um sinalizador afim) 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).
[00285] 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
[00286] A Figura 25B é um diagrama conceitual para ilustrar um exemplo de derivar um vetor de movimento de cada sub-bloco no mo- do afim no qual três pontos de controle são utilizados. Na Figura 25B, o bloco corrente inclui dezesseis blocos de 4x4. Aqui, o vetor de mo- vimento vo 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, o vetor de movimento v: 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 vetor de mo- vimento v2 no ponto de controle de canto inferior esquerdo para o blo- co corrente é derivado com base em um vetor de movimento de um bloco vizinho. Três vetores de movimento vo, v1, e vz podem ser proje- tados de acordo com uma expressão (1B) abaixo indicada, e vetores de movimento (vx, v,) para os respectivos sub-blocos no bloco corrente podem ser derivados. Math. 2 C = Mix Vox) x— (Vox vo), +Vox w h (AB) (vi Yor) (vapVoy) WA to tr
[00287] —Aqui,xey 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.
[00288] Os modos afim nos quais diferentes números de pontos de controle (por exemplo, dois e três pontos de controle) são utilizados podem comutados e sinalizados no nível de CU. Deve ser notado que informações que indicam o número de pontos de controle no modo afim utilizados no nível de CU podem ser sinalizadas 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).
[00289] 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, superi- or direito, e inferior esquerdo. Por exemplo, os modos afim incluem dois modos 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
[00290] A Figura 26A, Figura 26B, e Figura 26C são diagramas conceituais para ilustrar o modo de mesclagem afim.
[00291] 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 À (esquerdo), bloco B (superior), bloco C (superior direito), bloco D (infe- rior esquerdo), e bloco E (superior esquerdo) os quais são vizinhos do bloco corrente. Mais especificamente, bloco codificado A (esquerdo), bloco B (superior), bloco C (superior direito), bloco D (inferior esquer- do), e bloco E (superior esquerdo) são verificados na ordem listada, e o primeiro bloco efetivo codificado de acordo com o modo afim é iden- tificado. Os preditores de vetor de movimento nos pontos de controle do bloco corrente são calculados com base em uma pluralidade de ve- tores de movimento que correspondem ao bloco identificado.
[00292] Por exemplo, como ilustrado na Figura 26B, quando bloco A o qual é vizinho para a esquerda do bloco corrente foi codificado de acordo com um modo afim no qual dois pontos de controle são utiliza-
dos, os vetores de movimento v3 e va projetados na posição de canto superior esquerdo e na posição de canto superior direito do bloco codi- ficado que inclui o bloco A são derivados. O preditor de vetor de mo- vimento vo 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 veto- res de movimento derivados v3 e va.
[00293] Por exemplo, como ilustrado na Figura 26C, quando o bloco A o qual é vizinho para a esquerda do bloco corrente foi codificado de acordo com um modo afim no qual três pontos de controle são utiliza- dos, os vetores de movimento v3, va, e vs projetados na posição de canto superior esquerdo, na posição de canto superior direito, e na po- sição de canto inferior esquerdo do bloco codificado que inclui o bloco A são derivados. O preditor de vetor de movimento vo no ponto de con- trole de canto superior esquerdo do bloco corrente, o preditor de vetor de movimento v, no ponto de controle de canto superior direito do blo- co 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 dos vetores de movimento derivados v3, va, e vs.
[00294] 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 cor- rente na Etapa Sj 1 na Figura 29 posteriormente descrita.
[00295] A Figura 27 é um fluxograma que ilustra um exemplo do modo de mesclagem afim.
[00296] 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, e um ponto de canto inferi- or esquerdo do bloco corrente como ilustrado na Figura 25B.
[00297] Em outras palavras, como ilustrado na Figura 26A, o inter- preditor 126 verifica o bloco codificado A (esquerdo), bloco B (superi- or), bloco C (superior direito), bloco D (inferior esquerdo), e bloco E (superior esquerdo) na ordem listada, e identifica o primeiro bloco efe- tivo codificado de acordo com o modo afim.
[00298] “Quando o bloco A é identificado e o bloco A tem dois pon- tos de controle, como ilustrado na Figura 26B, o interpreditor 126 cal- cula o vetor de movimento vo no ponto de controle de canto superior esquerdo do bloco corrente e o vetor de movimento vi: no ponto de controle de canto superior direito do bloco corrente de vetores de mo- vimento v3 e va no canto superior esquerdo e no canto superior direito do bloco codificado que inclui o bloco A. Por exemplo, o interpreditor 126 calcula o vetor de movimento vo no ponto de controle de canto su- perior esquerdo do bloco corrente e o vetor de movimento v: no ponto de controle de canto superior direito do bloco corrente projetando veto- res de movimento v3 e va no canto superior esquerdo e no canto supe- rior direito do bloco codificado sobre o bloco corrente.
[00299] —Alternativamente, quando o bloco A é identificado e o bloco A tem três pontos de controle, como ilustrado na Figura 26C, o inter- preditor 126 calcula o vetor de movimento vo no ponto de controle de canto superior esquerdo do bloco corrente, o vetor de movimento v: no ponto de controle de canto superior direito do bloco corrente, e o vetor de movimento v2 no ponto de controle de canto inferior esquerdo do bloco corrente de vetores de movimento v3, va, e vs no canto superior esquerdo, no canto superior direito, e no canto inferior esquerdo do bloco codificado que inclui o bloco A. Por exemplo, o interpreditor 126 calcula o vetor de movimento vo no ponto de controle de canto superior esquerdo do bloco corrente, o vetor de movimento v1: no ponto de con- trole de canto superior direito do bloco corrente, e o vetor de movimen- to v2 no ponto de controle de canto inferior esquerdo do bloco corrente projetando os vetores de movimento v3, va, e vs no canto superior es- querdo, no canto superior direito, e no canto inferior esquerdo do bloco codificado sobre o bloco corrente.
[00300] A seguir, o interpreditor 126 executa compensação de mo- vimento de cada um de uma pluralidade de sub-blocos incluídos 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 vo e v: e a expressão (1A) acima descrita ou (ii) três predi- tores de vetor de movimento vo, v1, e vz e a expressão (1B) acima des- crita (Etapa Sk 2). O interpreditor 126 então executa compensação de movimento dos sub-blocos utilizando estes MVs afim e imagens de referência codificadas (Etapa Sk 3). Como um resultado, a compen- sação de movimento do bloco corrente é executada para gerar uma imagem de predição do bloco corrente. Derivação de MV > Modo Inter Afim
[00301] A Figura 28A é um diagrama conceitual para ilustrar um modo inter afim no qual dois pontos de controle são utilizados.
[00302] No modo inter afim, como ilustrado na Figura 28A, um vetor de movimento selecionado de vetores de movimento do bloco A, bloco B, e bloco C codificados os quais são vizinhos do bloco corrente é uti- lizado como preditor de vetor de movimento vo no ponto de controle de canto superior esquerdo do bloco corrente. Do mesmo modo, um vetor de movimento selecionado dos vetores de movimento do bloco D e bloco E codificados os quais são vizinhos do bloco corrente é utilizado como um preditor de vetor de movimento v: no ponto de controle de canto superior direito do bloco corrente.
[00303] A Figura 28B é um diagrama conceitual para ilustrar um modo inter afim no qual três pontos de controle são utilizados.
[00304] No modo inter afim, como ilustrado na Figura 28B, um vetor de movimento selecionado dos vetores de movimento do bloco A, blo- co B, e bloco C codificados os quais são vizinhos do bloco corrente é utilizado como preditor de vetor de movimento vo no ponto de controle de canto superior esquerdo do bloco corrente. Do mesmo modo, um vetor de movimento selecionado dos vetores de movimento do bloco D e bloco E codificados os quais são vizinhos do bloco corrente é utiliza- do como preditor de vetor de movimento v: no ponto de controle de canto superior direito do bloco corrente. Mais ainda, um vetor de mo- vimento selecionado dos vetores de movimento do bloco F e bloco G codificados os quais são vizinhos do bloco corrente é utilizado como preditor de vetor de movimento v2 no ponto de controle de canto inferi- or esquerdo do bloco corrente.
[00305] A Figura 29 é um fluxograma que ilustra um exemplo de um modo inter afim.
[00306] No modo inter afim como ilustrado, primeiro, o interpreditor 126 deriva preditores de MV (vo, v1) ou (vo, v1, v2) de respectivos dois ou três pontos de controle de um bloco corrente (Etapa Sj 1). Os pon- tos de controle são um ponto de canto superior esquerdo do bloco cor- rente e um ponto de canto superior direito do bloco corrente como ilus- trado na Figura 25A, ou um ponto de canto superior esquerdo do bloco corrente, um ponto de canto superior direito do bloco corrente, e um ponto de canto inferior esquerdo do bloco corrente como ilustrado na Figura 25B.
[00307] Em outras palavras, o interpreditor 126 deriva os preditores de vetor de movimento (vo, v1) ou (vo, v1, V2) de respectivos dois ou três pontos de controle do bloco corrente selecionando vetores de movi- mento de quaisquer dos blocos entre os blocos codificados na vizi-
nhança dos respectivos pontos de controle do bloco corrente ilustrados ou na Figura 28A ou Figura 28B. Neste tempo, o interpreditor 126 codi- fica, em um fluxo, informações de seleção de preditor de vetor de mo- vimento para identificar os dois vetores de movimento selecionados.
[00308] Por exemplo, o interpreditor 126 pode determinar, utilizando uma avaliação de custo ou similares, o bloco do qual um vetor de mo- vimento como um preditor de vetor de movimento em um ponto de controle é selecionado dentre blocos codificados vizinhos do bloco cor- rente, e pode descrever, em um fluxo de bits, um sinalizador que indi- ca qual preditor de vetor de movimento foi selecionado.
[00309] A seguir, o interpreditor 126 executa estimativa de movi- mento (Etapa 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 a expres- são (1A) ou expressão (1B) acima descritas (Etapa Sj 3). O interpredi- tor 126 então executa compensação de movimento dos sub-blocos utilizando estes MVs afim 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 estimati- va 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.
[00310] 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
[00311] “Quando modos afim nos quais diferentes números de pon- tos de controle (por exemplo, dois e três pontos de controle) são utili- zados 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 em um bloco corrente podem ser diferentes um do outro. À 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 codifi- cado e o número de pontos de controle em um bloco corrente são dife- rentes um do outro.
[00312] 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 o qual é vizinho para a esquerda do bloco corrente foi codificado de acordo com um modo afim no qual dois pontos de controle são utiliza- dos, os vetores de movimento v3 e va projetados na posição de canto superior esquerdo e na posição de canto superior direito no bloco codi- ficado que inclui o bloco A são derivados. O preditor de vetor de mo- vimento vo no ponto de controle de canto superior esquerdo do bloco corrente e preditor de vetor de movimento v: no ponto de controle de canto superior direito do bloco corrente são então calculados de veto- res de movimento derivados v3 e va. Mais ainda, o preditor de vetor de movimento v2 no ponto de controle de canto inferior esquerdo é calcu- lado dos vetores de movimento derivado vo e v1.
[00313] 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 para a esquer- da 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, va, e vs 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 o bloco A são derivados. O preditor de vetor de movimento vo no ponto de controle de canto superior esquerdo do blo- co 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, va, e vs.
[00314] 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 cor- rente na Etapa Sj 1 na Figura 29. Derivação de MV> DMVR
[00315] A Figura31A é um fluxograma que ilustra uma relação en- tre o modo de mesclagem e DMVR.
[00316] O interpreditor 126 deriva um vetor de movimento de um bloco corrente de acordo com o modo de mesclagem (Etapa SI 1). À seguir, o interpreditor 126 determina se executar estimativa de um ve- tor de movimento, isto é, estimativa de movimento (Etapa SI 2). Aqui, quando determinando não executar estimativa de movimento (Não na Etapa SI 2), o interpreditor 126 determina o vetor de movimento deri- vado na Etapa SI 1 como o vetor de movimento final para o bloco cor- rente (Etapa SI 4). Em outras palavras, neste caso, o vetor de movi- mento do bloco corrente é determinado de acordo com o modo de mesclagem.
[00317] Quando determinando executar estimativa de movimento na Etapa SI 1 (Sim na Etapa SI 2), o interpreditor 126 deriva o vetor de movimento final para o bloco corrente estimando uma região cir- cundante da imagem de referência especificada pelo vetor de movi- mento derivado na Etapa SI 1 (Etapa SI 3). Em outras palavras, neste caso, o vetor de movimento do bloco corrente é determinado de acor- do com o DMVR.
[00318] A Figura 31B é um diagrama conceitual para ilustrar um exemplo de um processo de DMVR para determinar um MV.
[00319] Primeiro, (por exemplo, no modo de mesclagem) o melhor MVP o qual foi ajustado para o bloco corrente é determinado ser um candidato de MV. Um pixel de referência é identificado de uma primei- ra imagem de referência (LO) a qual é uma imagem codificada na dire- ção LO de acordo com um candidato de MV (LO). Do mesmo modo, um pixel de referência é identificado de uma segunda imagem de referên- cia (L1) a qual é uma imagem codificada na direção L1 de acordo com um candidato de MV (L1). Um gabarito é gerado calculando uma mé- dia destes pixels de referência.
[00320] A seguir, cada uma das regiões circundantes de candidatos de MV da primeira imagem de referência (LO) e da segunda imagem de referência (L1) são estimadas, e o MV o qual gera o menor custo é determinado ser o MV final. Deve ser notado que o valor de custo po- de 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 candidatos de MV, etc.
[00321] Deve ser notado que os processos, configurações e opera- ções aqui descritos tipicamente são basicamente comuns entre o codi- ficador e um decodificador a ser posteriormente descrito.
[00322] Exatamente os mesmos processos exemplares aqui descri- tos nem sempre precisam ser executados. Qualquer processo para permitir a derivação do MV final por estimativa em regiões circundan- tes de candidatos de MV pode ser utilizado. Compensação de Movimento> BIO / OBMC
[00323] A compensação de movimento envolve um modo para ge- rar uma imagem de predição, e corrigir a imagem de predição. O modo é, por exemplo, BIO e OBMC a serem posteriormente descritos.
[00324] A Figura 32 é um fluxograma que ilustra um exemplo de geração de uma imagem de predição.
[00325] 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).
[00326] A Figura 33 é um fluxograma que ilustra outro exemplo de geração de uma imagem de predição.
[00327] 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 pro- cesso de correção (Etapa Sn 3). Aqui, quando determinando executar um processo de correção (Sim na Etapa Sn 3), o interpreditor 126 ge- ra 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).
[00328] Além disso, a compensação de movimento envolve um mo- do 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 descrito.
[00329] A Figura 34 é um fluxograma que ilustra outro exemplo de geração de uma imagem de predição.
[00330] 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ân- cia (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
[00331] 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 com base em infor- maçõ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).
[00332] No modo de OBMC, as informações que indicam um tama- nho de sub-bloco para OBMC (referido como, por exemplo, um tama- nho de bloco de OBMC) podem ser sinalizadas no nível de sequência. Mais ainda, as informações que indicam se aplicar o modo de OBMC (referidas 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 pode ser executada 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).
[00333] Exemplos do modo de OBMC serão descritos em mais de- talhes. As Figuras 35 e 36 são um fluxograma e um diagrama concei- tual para ilustrar um esboço de um processo de correção de imagem de predição executado por um processo de OBMC.
[00334] — Primeiro, como ilustrado na Figura 36, uma imagem de pre- diçã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 uma ima- gem de referência, e indica que o bloco corrente da imagem corrente refere-se de modo a obter uma imagem de predição.
[00335] A seguir, uma imagem de predição (Pred L) é obtida apli- cando um vetor de movimento (MV L) o qual já foi derivado pelo bloco codificado vizinho da esquerda do bloco corrente para o bloco corrente (reutilizando o vetor de movimento para o bloco corrente). O vetor de movimento (MV L) está 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 misturar o limite entre blocos vizinhos.
[00336] Do mesmo modo, uma imagem de predição (Pred U) é ob- tida aplicando um vetor de movimento (MV U) o qual já foi derivado do bloco codificado vizinho acima do bloco corrente para o bloco corrente (reutilizando o vetor de movimento para o bloco corrente). O vetor de movimento (MV U) está 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 sobrepondo a imagem de predição Pred U nas imagens de predição (por exemplo, Pred e Pred L) sobre as quais a primeira correção foi executada. Isto provê um efeito de misturar o limite entre blocos vizinhos. A imagem de pre- dição obtida pela segunda correção é aquela na qual o limite entre os blocos vizinhos misturou (suavizou), e assim e a imagem de predição final do bloco corrente.
[00337] Apesar do exemplo acima ser um método de correção de dois percursos que utiliza 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 percursos utilizando também o bloco vizinho direi- to e/ou o bloco vizinho inferior.
[00338] 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 limi- te de bloco ao invés da região de pixel do bloco inteiro.
[00339] 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 pre- dição adicional Pred L e Pred U foi acima descrita. No entanto, quan- do a 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 ima- gens 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 adicionalmente sobrepostas para obter a ima- gem de predição final.
[00340] 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 adicionalmente dividindo o bloco de predição.
[00341] 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 per- tence a uma região que tem um movimento complicado. O codificador ajusta o obmc flag para um valor "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 "O"
quando o bloco não pertence a região que tem um movimento compli- cado e codifica o bloco sem aplicar um processo de OBMC. O decodi- ficador 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 decodificar o bloco comutando entre aplica- ção e não aplicação do processo de OBMC de acordo com o valor do sinalizador.
[00342] O interpreditor 126 gera uma imagem de predição retangu- lar 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 pre- dição para gerar a imagem de predição retangular final. A forma dife- rente de um retângulo pode ser, por exemplo, um triângulo.
[00343] A Figura 37 é um diagrama conceitual para ilustrar a gera- ção de duas imagens de predição triangulares.
[00344] 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 triangu- lar. Do mesmo modo, o interpreditor 126 gera uma imagem de predi- ção triangular executando compensação de movimento de uma se- gunda partição que tem uma forma triangular em um bloco corrente utilizando um segundo MV da segunda partição, para gerar uma ima- gem de predição triangular. O interpreditor 126 então gera uma ima- gem de predição que tem a mesma forma retangular que a forma re- tangular do bloco corrente combinando estas imagens de predição.
[00345] “Deve ser notado que, apesar da primeira partição e da se- gunda partição serem triângulos no exemplo ilustrado na Figura 37, a primeira partição e a segunda partição podem ser trapezoides, ou ou-
tras formas diferentes uma da outra. Mais ainda, apesar do bloco cor- rente incluir duas partições no exemplo ilustrado na Figura 37, o bloco corrente pode incluir três ou mais partições.
[00346] Além disso, a primeira partição e a segunda partição podem sobrepor uma com a outra. Em outras palavras, a primeira partição e a segunda partição podem incluir a mesma região de pixel. Neste caso, a imagem de predição para um bloco corrente pode ser gerada utili- zando uma imagem de predição na primeira partição e uma imagem de predição na segunda partição.
[00347] — Além disso, apesar de um exemplo no qual uma imagem de predição é gerada para cada uma de duas partições utilizando inter- predição, uma imagem de predição pode ser gerada para pelo menos uma partição utilizando intrapredição. Compensação de Movimento > BIO
[00348] 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 um movimento linear uniforme será descrito. Este modo é também referido como um modo de fluxo ótico bidirecional (BIO).
[00349] A Figura 38 é um diagrama conceitual para ilustrar um mo- delo que assume um movimento linear uniforme. Na Figura 38, (vx, vy) indica um vetor de velocidade, e 70 e 71 indicam distâncias temporais entre uma imagem corrente (Cur Pic) e duas imagens de referência (RefO, Ref1). (MVxO0, MVyO) indicam vetores de movimento que cor- respondem à imagem de referência Ref0, e (MVx1, MVy1) indicam ve- tores de movimento que correspondem à imagem de referência Ref1.
[00350] — Aqui, sob a suposição de movimento linear uniforme exibido pelos vetores de velocidade (vx, vy), (MVxo, MVyo) e (MVx1, MVy1) são representados como (vxto, Vyto) E (“Vxt1, -Vyt1), respectivamente, e a seguinte equação de fluxo ótico (2) pode ser empregada.
MATH. 3 218 /Ot+v. 018 /d0x+v 0189 /dy— 0.(2)
[00351] Aqui, 1º indica um valor de luma compensado em movi- mento de imagem de referência k (k = O, 1). Esta equação de fluxo óti- co 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 gra- diente espacial de uma imagem de referência, e (iii) o produto da velo- cidade 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, uma lista de mesclagem pode ser corri- gido em unidades de um pixel, com base em uma combinação da equação de fluxo ótico e da interpolação de Hermite.
[00352] Deve ser notado que um vetor de movimento pode ser deri- vado no lado de decodificador utilizando um método outro que derivar um vetor de movimento com base em um modelo assumindo movi- mento linear uniforme. Por exemplo, um vetor de movimento pode ser derivado em unidades de um sub-bloco com base em vetores de mo- vimento de blocos vizinhos. Compensação de Movimento > LIC
[00353] 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.
[00354] A Figura 39 é um diagrama conceitual para ilustrar um exemplo de um método de geração de imagem de predição utilizando um processo de correção de luminância executado por um processo de LIC.
[00355] Primeiro, um MV é derivado de uma imagem de referência codificada, e uma imagem de referência que corresponde ao bloco corrente é obtida.
[00356] 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 uma região de referência vizinha es- querda codificada (região de referência circundante) e a região de re- ferê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.
[00357] A imagem de predição para o bloco corrente é gerada exe- cutando um processo de correção de luminância no qual o parâmetro de correção de luminância é aplicado à imagem de referência na ima- gem de referência especificada pelo MV.
[00358] Deve ser notado que a forma da região de referência cir- cundante ilustrada na Figura 39 é somente um exemplo; a região de referência circundante pode ter uma diferente forma.
[00359] Mais ainda, apesar do processo no qual uma imagem de predição é gerada de uma única imagem de referência ter sido 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 pro- cesso de correção de luminância das imagens de referência obtidas das imagens de referência no mesmo modo como acima descrito.
[00360] 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 si- nal que indica se aplicar o processo de LIC. Como um exemplo espe- cífico, o codificador determina se o bloco corrente pertence a uma re- gião que tem uma mudança de luminância. O codificador ajusta 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 pertencer a uma região que tem uma mudança de luminân- cia e codifica o bloco corrente sem aplicar um processo de LIC. O de- codificador pode decodificar o lic flag escrito no fluxo e decodificar o bloco corrente comutando entre aplicação e não aplicação de um pro- cesso de LIC de acordo com o valor de sinalizador.
[00361] Um exemplo de um diferente método de determinar se apli- car 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 sobre o 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.
[00362] “Uma modalidade do processo de correção de luminância (LIC) descrito com referência à Figura 39 está abaixo descrito em de- talhes.
[00363] 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.
[00364] A seguir, o interpreditor 126 extrai informações que indicam como o valor de luma da imagem de referência mudou para o valor de luma da imagem corrente, utilizando o valor de pixel de luma de uma região de referência circundante codificada a qual é vizinha à esquer- da ou acima do bloco corrente e o valor de luma na posição corres- pondente na imagem de referência especificado por um vetor de mo-
vimento, e calcula um parâmetro de correção de luminância. Por exemplo, é assumido que o valor de pixel de luma de um dado pixel na região de referência circundante na imagem corrente é p0, e que o va- lor 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 interpredi- tor 126 calcula coeficientes A e B para otimizar A x 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.
[00365] 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 lu- minância calculando A x p2 + B = p3 para cada um dos pixels na ima- gem de referência.
[00366] Deve ser notado que a forma da região de referência cir- cundante ilustrada na Figura 39 é um exemplo; uma diferente forma outra que a forma da região de referência circundante pode ser utiliza- da. 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 de pixels determinado extraídos de cada um de um pixel vizi- nho superior e um pixel vizinho esquerdo pode ser utilizada como uma região de referência circundante. O número de pixels determinado po- de ser predeterminado. Além disso, a região de referência circundante não está limitada a uma região a qual é vizinha do bloco corrente, e pode ser uma região a qual não seja vizinha do bloco corrente.
[00367] 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.
[00368] Apesar de operações executadas pelo codificador 100 te- rem sido aqui descritas, deve ser notado que o decodificador 200 tipi- camente executa operações similares.
[00369] Deve ser notado que o processo de LIC pode ser aplicado não somente a luma mas também a croma. Neste tempo, um parâme- tro 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.
[00370] Além disso, o processo de LIC pode ser aplicado em unida- des 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
[00371] O controlador de predição 128 seleciona um de um sinal de intrapredição (um sinal emitido do intrapreditor 124) e um sinal de in- terpredição (um sinal emitido do interpreditor 126), e emite o sinal se- lecionado para o subtrator 104 e somador 116 como um sinal de pre- dição.
[00372] Como ilustrado na Figura 1, em vários tipos de exemplos de codificador, o controlador de predição 128 pode emitir um parâmetro de predição o qual é inserido no codificador de entropia 110. O codifi- cador 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 os quais são inseridos do quantizador 108. O parâmetro de predição pode ser utili- zado 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 in- cluir (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 utilizado pelo intrapreditor 124 ou interpreditor 126), ou (ii) um índice opcional, um sinalizador, ou um valor o qual está baseado em um processo de predição executado em cada um de intrapreditor 124, o interpreditor 126, e controlador de predição 128, ou o qual indica o processo de predição. Exemplo de Montagem de Codificador
[00373] A Figura 40 é um diagrama de blocos que ilustra um exem- plo de montagem do codificador 100. O codificador 100 inclui um pro- cessador a1 e memória a2. Por exemplo, a pluralidade de elementos constituintes do codificador 100 ilustrado na Figura 1 está montada no processador a1 e memória a2 ilustrados na Figura 40.
[00374] O processador al é um circuito o qual executa processa- mento de informações e é acessível à memória a2. Por exemplo, o processador a1 é um circuito eletrônico dedicado ou geral o qual codi- fica 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 desempenhar as funções de dois ou mais ele- mentos constituintes dentre a pluralidade de elementos constituintes do codificador 100 ilustrado na Figura 1, etc.
[00375] A memória a2 é uma memória dedicada ou geral para ar-
mazenar informações que são utilizadas pelo processador a1 para co- dificar um vídeo. A memória a2 pode ser um circuito eletrônico, e pode estar conectada 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 simila- res, ou pode ser representada como um armazenamento, um meio de gravação, ou similares. Além disso, a memória a2 pode ser memória não volátil, ou memória volátil.
[00376] Por exemplo, a memória a2 pode armazenar um vídeo a ser codificado ou um fluxo de bits que corresponde a um vídeo codifi- cado. Além disso, a memória a2 pode armazenar um programa para fazer com que o processador a1 codifique um vídeo.
[00377] Além disso, por exemplo, a memória a2 pode desempenhar as funções de dois ou mais elementos constituintes para armazenar informações dentre a pluralidade de elementos constituintes do codifi- cador 100 ilustrado na Figura 1, etc. Por exemplo, a memória a2 pode desempenhar as funções de memória de blocos 118 e memória de quadros 122 ilustrados na Figura 1. Mais especificamente, a memória a2 pode armazenar um bloco reconstruído, uma imagem reconstruída, etc.
[00378] Deve ser notado que, no codificador 100, toda a pluralidade de elementos constituintes indicada na Figura 1, etc. pode não ser im- plementada, e todos os processos acima descritos podem não ser executados. Parte dos elementos constituintes indicados na Figura 1, etc. pode estar incluída em um outro dispositivo, ou parte dos proces- Sos acima descritos pode ser executada por outro dispositivo. Decodificador
[00379] A seguir, um decodificador capaz de decodificar um sinal codificado (fluxo de bits codificado) emitido, por exemplo, do codifica-
dor 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.
[00380] 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 contro- lador de predição 220.
[00381] O decodificador 200 está implementado como, por exem- plo, um processador e memória genéricos. Neste caso, quando um programa de software armazenado na memória é executado pelo pro- cessador, 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 controla- dor 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, intra- preditor 216, interpreditor 218, e controlador de predição 220.
[00382] Daquiem diante, um fluxo total de processos executados pelo decodificador 200 está descrito, e então cada um dos elementos constituintes incluídos no decodificador 200 será descrito. Fluxo Total de Processo de Decodificação
[00383] A Figura 42 é um fluxograma que ilustra um exemplo de um processo de decodificação total executado pelo decodificador 200.
[00384] 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, 128x128 pixels) (Etapa Sp 1). Este padrão de divi- são é um padrão de divisão selecionado pelo codificador 100. O deco-
dificador 200 então executa processos das Etapa Sp 2 a Sp 6 para cada um de uma pluralidade de blocos do padrão de divisão.
[00385] Em outras palavras, o decodificador de entropia 202 deco- difica (especificamente, decodifica em entropia) coeficientes quantiza- dos 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).
[00386] A seguir, o quantizador inverso 204 executa 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).
[00387] A seguir, o processador de predição que inclui todos ou parte de intrapreditor 216, o 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).
[00388] A seguir, o somador 208 soma o bloco de predição ao bloco de diferença para gerar uma imagem reconstruída (também referido como um bloco de imagem decodificado) do bloco corrente (Etapa Sp 5).
[00389] “Quando a imagem reconstruída é gerada, o filtro de loop 212 executa filtragem da imagem reconstruída (Etapa Sp 6).
[00390] O decodificador 200 então determina se a decodificação da imagem inteira foi terminada (Etapa Sp 7). Quando determinando que a decodificação ainda não foi terminada (Não na Etapa Sp 7), o deco- dificador 200 repetidamente executa os processos começando com a Etapa Sp 1.
[00391] “Como ilustrado, os processos das Etapas Sp 1 a Sp 7 são executados sequencialmente pelo decodificador 200. Alternativamen- te, 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
[00392] O decodificador entropia 202 decodifica em entropia um fluxo de bits codificado. Mais especificamente, por exemplo, o decodi- ficador de entropia 202 decodifica por aritmética um fluxo de bits codi- ficado em um sinal binário. O decodificador de entropia 202 então de- binariza o sinal binário. Com isto, o decodificador de entropia 202 emi- te 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
[00393] O quantizador inverso 204 quantiza inverso 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 quanti- za 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 transfor- mador inverso 206. Transformador Inverso
[00394] 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.
[00395] Por exemplo, quando as informações analisadas de um flu- xo de bits codificado indicam que EMT ou AMT deve ser aplicado (por exemplo, quando um sinalizador de AMT é verdadeiro), o transforma- dor inverso 206 transforma inverso os coeficientes de transformada do bloco corrente com base em informações que indicam o tipo de trans- formada analisado.
[00396] Mais ainda, por exemplo, quando as informações analisa- das de um fluxo de bits codificado indicam que NSST deve ser aplica- da, o transformador inverso 206 aplica uma transformada inversa se- cundária nos coeficientes de transformada. Somador
[00397] O somador 208 reconstrói o bloco corrente somando os er- ros de predição os quais são entradas do transformador inverso 206 e amostras de predição as quais são entrada 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
[00398] A memória de blocos 210 é um armazenamento para arma- zenar blocos em uma imagem a ser decodificada (daqui em diante re- ferida como uma imagem corrente) e a ser referida em intrapredição. Mais especificamente, a memória de blocos 210 armazena blocos re- construídos emitidos do somador 208. Filtro de loop
[00399] O filtro de loop 212 aplica um filtro de loop em blocos re- construídos pelo somador 208, e emite os blocos reconstruídos filtra- dos para a memória de quadros 214, dispositivo de display, etc.
[00400] “Quando informações que indicam LIGADO ou DESLIGADO de um ALF analisado de um fluxo de bits codificado indica que um ALF está LIGADO, um filtro dentre uma pluralidade de filtros é selecionado com base na direção e atividade de gradientes locais, e o filtro seleci-
onado é aplicado no bloco reconstruído. Memória de Quadros
[00401] A memória de quadros 214 é, por exemplo, um armazena- mento para armazenar imagens de referência para utilização em inter- predição, e é também referido como um armazenamento temporário de quadros. Mais especificamente, a memória de quadros 214 arma- zena um bloco reconstruído filtrado pelo filtro de loop 212. Processador de Predição (Intrapreditor, Interpreditor, Controlador de Predição)
[00402] 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; inter- preditor 218; e controlador de predição 220.
[00403] O processador de predição gera uma imagem de predição de um bloco corrente (Etapa Sq 1). Esta imagem de predição é tam- bém referida como um sinal de predição ou um bloco de predição. De- ve ser notado que o sinal de predição é, por exemplo, um sinal de in- trapredição ou um sinal de interpredição. Especificamente, o proces- sador de predição gera a imagem de predição do bloco corrente utili- zando 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 coeficientes, restauração de um bloco de diferen- ça, e geração de um bloco de imagem decodificado.
[00404] A imagem reconstruída pode ser, por exemplo, uma ima- gem em uma imagem de referência, ou uma imagem de um bloco de- codificado em uma imagem corrente a qual é a imagem que inclui o bloco corrente. O bloco decodificado na imagem corrente é, por exem- plo, um bloco vizinho do bloco corrente.
[00405] A Figura 44 é um fluxograma que ilustra outro exemplo de um processo executado pelo processador de predição do decodifica- dor 200.
[00406] 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.
[00407] “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 pa- ra 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).
[00408] 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 até o terceiro métodos pode ser um método de interpredição, um método de intrapredição, ou outro méto- do de predição. A imagem reconstruída acima descrita pode ser utili- zada nestes métodos de predição. Intrapreditor
[00409] O intrapreditor 216 gera um sinal de predição (sinal de in- trapredição) executando intrapredição referindo a um bloco ou blocos na imagem corrente armazenada na memória de blocos 210. Com ba- se 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, valo- res de luma e/ou croma) de um bloco ou blocos vizinhos ao bloco cor-
rente, e então emite o sinal de intrapredição para o controlador de pre- dição 220.
[00410] 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 blo- co corrente.
[00411] Mais ainda, quando informações analisadas de um fluxo de bits codificado indicam que PDPC deve ser aplicada, o intrapreditor 216 corrige valores de pixel intrapreditos com base em gradientes de pixel de referência horizontal / vertical. Interpreditor
[00412] O interpreditor 218 prediz o bloco corrente referindo a uma imagem de referência armazenada na memória de quadros 214. A in- terpredição é executada em unidades de um bloco ou um sub-bloco corrente (por exemplo, um bloco de 4x4) no bloco corrente. Por exem- plo, o interpreditor 218 gera um sinal de interpredição do bloco corren- te ou do sub-bloco 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.
[00413] Deve ser notado que quando as informações analisadas do fluxo de bits codificado indicam que o modo de OBMC deve ser apli- cado, o interpreditor 218 gera o sinal de interpredição utilizando infor- mações de movimento de um bloco vizinho além de informações de movimento do bloco corrente obtidas de estimativa de movimento.
[00414] Mais ainda, quando as informações analisadas do fluxo de bits codificado indicam que o modo de FRUC deve ser aplicado, o in- terpreditor 218 deriva as informações de movimento executando esti-
mativa de movimento de acordo com o método de coincidência de pa- drão (coincidência bilateral ou coincidência de gabarito) 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.
[00415] Mais ainda, quando o modo de BIO deve ser aplicado, o interpreditor 218 deriva um vetor de movimento com base em um mo- delo que assume movimento linear uniforme. Mais ainda, quando as informações analisadas do fluxo de bits codificado indicam que o modo 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
[00416] Quando as informações analisadas de um fluxo de bits co- dificado indicam que o modo inter normal deve ser aplicado, o inter- preditor 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.
[00417] A Figura 45 é um fluxograma que ilustra um exemplo de interpredição em modo inter normal no decodificador 200.
[00418] O interpreditor 218 do decodificador 200 executa compen- sação de movimento para cada bloco. O interpreditor 218 obtém uma pluralidade de candidatos de MV para um bloco corrente com base em informações tais como MVs de uma pluralidade de blocos decodifica- dos temporalmente ou espacialmente circundando o bloco corrente (Etapa Ss 1). Em outras palavras, o interpreditor 218 gera uma lista de candidatos de MV.
[00419] A seguir, o interpreditor 218 extrai N (um inteiro de 2 ou maior) candidatos de MV da pluralidade de candidatos de MV 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.
[00420] A seguir, o interpreditor 218 decodifica informações de se- leçã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).
[00421] A seguir, o interpreditor 218 decodifica uma diferença de MV do fluxo de entrada, e deriva um MV para um bloco corrente so- mando um valor de diferença o qual é a diferença de MV decodificada e um preditor de vetor de movimento selecionado (Etapa Ss 4).
[00422] 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 de- codificada (Etapa Ss 5). Controlador de Predição
[00423] O controlador de predição 220 seleciona ou o sinal de in- trapredição ou o sinal de interpredição, e emite o sinal de predição se- lecionado 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 con- figurações, funções, e processos de controlador de predição 128, in- trapreditor 124, e interpreditor 126 no lado de codificador. Exemplo de Montagem de Decodificador
[00424] A Figura 46 é um diagrama de blocos que ilustra um exem- plo de montagem do decodificador 200. O decodificador 200 inclui um processador b1 e memória b2. Por exemplo, a pluralidade de elemen- tos constituintes do decodificador 200 ilustrada na Figura 41 estão montados no processador b1 e memória b2 ilustrados na Figura 46.
[00425] O processador bi é um circuito o qual executa processa- mento de informações e é acessível à memória b2. Por exemplo, o processador b1 é um circuito eletrônico dedicado ou geral o qual de- codifica um vídeo (isto é, um fluxo de bits codificado). O processador b1i pode ser um processador tal como uma CPU. Além disso, o pro- cessador b1 pode ser um agregado de uma pluralidade de circuitos eletrônicos. Além disso, por exemplo, o processador b1 pode desem- penhar as funções de dois ou mais elementos constituintes dentre a pluralidade de elementos constituintes do decodificador 200 ilustrado na Figura 41, etc.
[00426] A memória b2 é uma memória dedicada ou geral para ar- mazenar informações que são utilizadas pelo processador b1 para de- codificar um fluxo de bits codificado. A memória b2 pode ser um circui- to 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 ar- mazenamento, um meio de gravação, ou similares. Além disso, a me- mória b2 pode ser uma memória não volátil, ou uma memória volátil.
[00427] — Por exemplo, memória b2 pode armazenar um vídeo ou um fluxo de bits. Além disso, memória b2 pode armazenar um programa para fazer com que o processador b1 decodifique um fluxo de bits co- dificado.
[00428] Além disso, por exemplo, a memória b2 pode desempenhar as funções de dois ou mais elementos constituintes para armazenar informações dentre a pluralidade de elementos constituintes do deco-
dificador 200 ilustrado na Figura 41, etc. Especificamente, a memória b2 pode desempenhar 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 re- construída, etc.
[00429] Deve ser notado que, um decodificador 200, todos da plura- lidade 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 estar incluída em outro dispositivo, ou parte dos processos acima descritos pode ser executada por outro dispositivo. Definições de Termos
[00430] Os respectivos termos podem ser definidos como abaixo indicado como exemplos.
[00431] Uma imagem é uma rede de amostras de luma em formato monocromático ou uma rede de amostras de luma e duas redes cor- respondentes 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.
[00432] Um quadro é a composição de um campo superior e um campo inferior, onde filas de amostras O, 2, 4, ... originam do campo superior e filas de amostras 1, 3, 5, ... originam do campo inferior.
[00433] Uma fatia é um número inteiro de unidades 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) den- tro da mesma unidade de acesso.
[00434] Uma tela lado a lado é uma região retangular de blocos de árvores de codificação dentro de uma coluna de telas lado a lado es- pecífica e uma fila de telas lado a lado específica em uma imagem. Uma tela lado a lado pode ser uma região retangular do quadro que está destinada a ser capaz de ser decodificada e codificada indepen- dentemente, apesar de que uma filtragem de loop através de bordas de telas lado a lado pode ainda ser aplicada.
[00435] “Um bloco é uma rede de amostras de M*xN (M colunas por N filas), ou uma rede de MXN de coeficientes de transformada. Um bloco pode ser uma região de pixels quadrada ou retangular que inclui matrizes uma de Luma e duas de Croma.
[00436] 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 amostras, 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 de uma imagem monocromática e uma imagem que é codificada utili- zando três planos de cor separados e estruturas de sintaxe utilizadas para codificar as amostras.
[00437] 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 32x32, os quais es- tes próprios podem ser adicionalmente particionados. Processo de Determinação de Filtro de Desbloqueio
[00438] A Figura 47 é um fluxograma que ilustra um processo para o codificador 100 ou decodificador 200 de acordo com a presente mo- dalidade para determinar se ou não aplicar um filtro de desbloqueio.
[00439] O seguinte descreve uma operação executada pelo codifi- cador 100, mas o decodificador 200 opera no mesmo modo que o co- dificador 100. Note, no entanto, que o decodificador 200 executa trans- formada ortogonal inversa a qual é o processo inverso da transforma- da ortogonal executada pelo codificador 100. Mais ainda, o codificador 100 codifica um sinal utilizado para processamento em um fluxo de bits, enquanto que o decodificador 200 decodifica um sinal utilizado para processamento do fluxo de bits.
[00440] O codificador 100 pode particionar uma CU corrente a ser processada em uma pluralidade de partições e aplicar, como um modo de transformada ortogonal, um modo de operação no qual a transfor- mada ortogonal é seletivamente executada em pelo menos um da plu- ralidade de partições. Em tal modo, a transformada ortogonal é execu- tada somente em resíduos de predição ou valores de pixel em uma partição específica. A SVT acima mencionada é um exemplo de tal modo de operação. Note que SVT é também referida como transfor- mada de sub-bloco (SBT).
[00441] ASBTé um modo de operação definido em VVC e é tam- bém expressa como um modo de SBT. A SBT pode ser um modo de operação definido em um diferente padrão de codificação, por exem- plo, o padrão sucessor da VVC. A VVC pode também ser denotada como Codificação de Vídeo Versátil ou Codec de Vídeo Versátil.
[00442] O codificador 100 determina se ou não aplicar um filtro de desbloqueio ao longo do fluxo de processamento na Figura 47.
[00443] Especificamente, o codificador 100 primeiro determina se um modo de operação, no qual a transformada ortogonal é executada somente em uma partição específica dentre uma pluralidade de parti- ções incluída em uma CU corrente a ser processada, é aplicado a uma CU corrente a ser processada (S101). O codificador 100 pode deter- minar se o modo de operação é aplicado na CU corrente com base em, por exemplo, se ou não SBT é aplicada na CU corrente.
[00444] “Quando o modo de operação é aplicado (Sim em S101), o codificador 100 executa a próxima etapa de determinação (S102).
[00445] Na próxima etapa de determinação (S102), se um limite de partição é um limite entre uma primeira partição na qual a transforma- da ortogonal é executada e uma segunda partição na qual a transfor- mada ortogonal não é executada é determinado. Quando o limite de partição é o limite entre a primeira partição e a segunda partição (Sim em S102), um filtro de desbloqueio que tem uma capacidade prede- terminada é aplicado ao limite de partição (S103).
[00446] “Note que apesar do limite de partição ser um limite entre duas partições em ambas das quais a transformada ortogonal é execu- tada, quando a base de transformada da transformada ortogonal exe- cutada em uma das duas partições é diferente da base de transforma- da da transformada ortogonal executada na outra, o codificador 100 pode aplicar um filtro de desbloqueio ao limite da partição.
[00447] Em SBT, uma CU corrente a ser processada pode ser sempre particionada em duas partições somente, e uma das duas par- tições pode ser uma primeira partição na qual a transformada ortogo- nal é executada enquanto que a outra pode ser uma segunda partição na qual a transformada ortogonal não é executada. Neste caso, o codi- ficador 100 pode determinar que um filtro de desbloqueio é sempre aplicado a um limite de partição incluído na CU corrente na qual SBT é aplicada.
[00448] Na SBT, a segunda determinação (S102) pode ser execu- tada quando, por exemplo, a CU corrente é particionada em quatro partições e a transformada ortogonal é executada em uma das quatro partições. Em tal caso, o codificador 100 pode determinar se um limite de partição é um limite entre a primeira partição na qual a transforma- da ortogonal é executada e a segunda partição na qual a transformada ortogonal não é executada.
[00449] &— Alternativamente, o codificador 100 pode determinar uma partição na qual a transformada ortogonal é executada, com base em um modo de partição em SBT tal como uma direção de particionamen- to e o número de partições, para determinar um limite ao qual um filtro de desbloqueio deve ser aplicado. Em outras palavras, o codificador 100 pode especificar um limite ao qual um filtro de desbloqueio deve ser aplicado, de acordo com, por exemplo, uma direção de particiona- mento ou o número de partições. O codificador 100 pode especificar um limite de acordo com se a CU corrente é particionada horizontal- mente ou verticalmente, por exemplo.
[00450] Neste fluxo de processamento, se ou não aplicar um filtro de desbloqueio, e também, a capacidade do filtro de desbloqueio a ser aplicado são determinados com base em se a transformada ortogonal é seletivamente executada em uma partição em uma CU. Note que o conteúdo de processamento relativo a um filtro de desbloqueio (espe- cificamente, se ou não aplicar um filtro de desbloqueio e a capacidade do filtro de desbloqueio a ser aplicado) pode ser determinado para um limite de CU diferente de um limite de partição, com base em um dife- rente processo de determinação.
[00451] Em relaçãoa um modo de interpredição aplicado por uni- dade de sub-bloco, tal como predição afim, o conteúdo do processa- mento relativo a um filtro de desbloqueio pode ser determinado com base em um diferente processo de determinação. Por exemplo, um filtro de desbloqueio pode ser aplicado a um limite de sub-bloco em uma CU quando, por exemplo, a predição afim é aplicada mesmo quando o modo de operação no qual a transformada ortogonal é exe- cutada somente em uma partição específica não é aplicado.
[00452] — Alternativamente, o codificador 100 pode determinar não aplicar um filtro de desbloqueio se o tamanho de um lado de uma CU ou de uma partição na direção ortogonal a um limite de partição for menor do que um tamanho predeterminado.
[00453] “Quando os valores de pixel de quatro pixels através de um limite são utilizados para um filtro de desbloqueio, por exemplo, é difícil aplicar um filtro de desbloqueio ao limite a menos que o tamanho de um lado em uma direção ortogonal ao limite seja pelo menos oito pixels. Portanto, o codificador 100 pode determinar não aplicar um fil-
tro de desbloqueio a um limite de partição se o tamanho de CU de um lado na direção ortogonal ao limite de partição for menor do que oito pixels.
[00454] Mais especificamente, quando o tamanho de uma CU em uma direção horizontal em (a) na Figura 5B é menor do que oito pixels, por exemplo, o codificador 100 pode determinar não aplicar um filtro de desbloqueio a um limite de partição. Note que com o tamanho de um lado mais curto de uma partição em SBT sendo restrito a, por exemplo, pelo menos quatro pixels, o tamanho do lado mais curto po- de ser assegurado ser pelo menos o número de pixels utilizado para um filtro de desbloqueio. Neste caso, o codificador 100 não precisa determinar se ou não aplicar um filtro de desbloqueio com base no ta- manho de uma CU.
[00455] Mesmo quando a transformada ortogonal tal como a trans- formada de frequência é executada como uma transformada primária e a transformada ortogonal tal como a NSST é subsequentemente exe- cutada como uma transformada secundária, o codificador 100 pode aplicar um filtro de desbloqueio a um limite de partição com base no processo de determinação de acordo com a presente modalidade.
[00456] Este fluxo de processamento é um exemplo e um ou mais dos processos aqui descritos podem ser removidos, ou um processo ou determinação de condição não aqui descrito pode ser adicionado.
[00457] Em um modo de operação, tal como SBT, no qual a trans- formada ortogonal é seletivamente executada em uma partição em uma CU, todos os resíduos de predição ou valores de pixel da segun- da partição na qual a transformada ortogonal não é executada são considerados como Os (zeros). Tal modo de operação é selecionado quando os resíduos de predição ou valores de pixel da segunda parti- ção são aproximados a zeros em muitos casos. No entanto, na vizi- nhança de um limite entre a primeira partição e a segunda partição en-
tre as quais se a transformada ortogonal é executada nos resíduos de predição ou valores de pixel são diferentes, uma distorção na qual os valores de pixel são descontínuos devido à transformada ortogonal pode ocorrer.
[00458] O codificador 100 ou decodificador 200 de acordo com a presente modalidade pode reduzir a distorção acima mencionada atra- vés de um processo de filtragem de desbloqueio.
[00459] Note que aplicar um filtro de desbloqueio a um limite cor- responde a atualizar o valor de pixel de cada pixel na vizinhança do limite, de modo que os valores de pixel na vizinhança do limite mudem suavemente em termos de espaço.
[00460] Como acima descrito, o codificador 100 executa um pro- cesso de filtragem de desbloqueio após executar transformada ortogo- nal, quantização, quantização inversa, e transformada ortogonal inver- sa, por exemplo. O decodificador 200 executa um processo de filtra- gem de desbloqueio após executar quantização inversa e transforma- da ortogonal inversa.
[00461] Por exemplo, uma imagem na qual um filtro de desbloqueio foi aplicado a um limite de partição pode ser utilizada como uma ima- gem de referência na geração de uma imagem de predição para codi- ficar ou decodificar outro bloco. O decodificador 200 pode emitir, como uma imagem decodificada, uma imagem na qual um filtro de desblo- queio foi aplicado a um limite de partição. Condições para Aplicar o Filtro de Desbloqueio
[00462] A Figura 48 é um diagrama que ilustra exemplos de uma condição para aplicar um filtro de desbloqueio a um limite de partição e a capacidade do filtro de desbloqueio a ser aplicado, assim como exemplos de uma condição para aplicar um filtro de desbloqueio a um limite de CU (bloco) e a capacidade do filtro de desbloqueio a ser apli- cado, de acordo com a presente modalidade. Em outras palavras, na
Figura 48, uma condição para aplicar um filtro de desbloqueio a um limite de partição e a capacidade do filtro de desbloqueio a ser aplica- do são adicionadas às condições ilustradas na Figura 10.
[00463] Um valor de Bs indica a capacidade de um filtro de desblo- queio. O valor de Bs pode assumir qualquer um dos três valores se- guintes: valor 2 indicando que o efeito de suavização é alto; valor 1 indicando que o efeito de suavização é baixo; e valor O indicando que nenhum processo de filtragem é executado.
[00464] O Codificador 100 pode aplicar um filtro de desbloqueio fra- co (Bs=1) como um filtro de desbloqueio a ser aplicado a um limite de partição. Um filtro de desbloqueio fraco especializado para blocos de grande tamanho pode ser separadamente definido apesar de não mostrado na figura. Mesmo neste caso, a capacidade do filtro de des- bloqueio a ser aplicado a um limite de partição pode ser a mesma que a capacidade aplicada sob a condição definida para o caso onde o va- lor de Bs é igual a 1.
[00465] Note que as condições para aplicar um filtro de desbloqueio não estão limitadas aos exemplos de acordo com a presente modali- dade. O codificador 100 pode determinar se ou não aplicar um filtro de desbloqueio a um limite de partição com base em uma condição dife- rente de uma condição baseada na qual a capacidade do filtro de des- bloqueio é determinada no caso de aplicar um filtro de desbloqueio.
[00466] “Quando uma transformada ortogonal é executada somente em uma das partições através de um limite de partição, por exemplo, o codificador 100 pode determinar somente aplicar um filtro de desblo- queio ao limite de partição. Neste caso, o codificador 100 pode deter- minar, com base em um diferente parâmetro, a capacidade do filtro de desbloqueio a ser aplicado. Variações
[00467] Como a transformada ortogonal é seletivamente exercitada em uma partição em uma CU, como é o caso de SBT, a qualidade de imagem na vizinhança de um limite de partição deteriora. Na presente modalidade, um filtro de desbloqueio é aplicado a um limite de partição de modo a reduzir tal deterioração em qualidade da imagem. Daqui em diante, uma combinação de outra ferramenta de codificação e trans- formada ortogonal seletivamente executada em uma partição será descrita.
[00468] “Quando a transformada primária é executada somente em uma partição específica em uma CU, como é o caso de SBT, o codifi- cador 100 pode executar a transformada secundária somente em uma partição sujeita à transformada primária.
[00469] —Alternativamente, os parâmetros de transformada podem ser determinados através de aprendizado off-line de modo que a trans- formada secundária tal como NSST, seja uma transformada ótima pa- ra o resultado da transformada primária. Neste caso, parâmetros de transformada diferentes daqueles utilizados para outros casos podem ser ajustados como parâmetros de transformada para o resultado da transformada executada na partição sujeita à transformada primária em SBT. Neste caso também, o codificador 100 pode aplicar um filtro de desbloqueio a um limite de partição com base no método descrito na presente modalidade.
[00470] Alternativamente, o codificador 100 pode executar a trans- formada secundária em uma CU inteira mesmo quando a transforma- da primária é executada somente em uma partição específica como é o caso de SBT. Mais ainda, o codificador 100 pode aplicar um filtro de desbloqueio a um limite de partição definido na transformada primária.
[00471] Existem outras ferramentas de codificação para particionar uma CU em partições e mudar uma operação de partição para parti- ção. Em inter / intrapredição combinada (CIIP), por exemplo, o codifi- cador 100 gera uma imagem de predição executando uma adição ponderada de adicionar o resultado de intrapredição e o resultado de interpredição. Na adição ponderada, o codificador 100 pode mudar o peso de partição para partição.
[00472] “Quando uma predição não direcional tal como predição planar, é utilizada para intrapredição em CIIP, o codificador 100 não particiona um CU em uma pluralidade de partições. Quando uma pre- dição direcional tal como predição vertical ou horizontal é utilizada pa- ra intrapredição em CIIP, por outro lado, o codificador 100 particiona uma CU em um número predeterminado de partições.
[00473] “Um modo de partição para particionar uma CU em uma plu- ralidade de partições é diferente entre SBT e CIIP. Alternativamente, como os resíduos de predição ou valores de pixel da segunda partição na qual a transformada ortogonal não é executada são considerados como zeros em SBT, o processamento em CIIP que inclui predição direcional não é consistente com o processamento em SBT, apesar dos modos de partição serem os mesmos.
[00474] —Consequentemente, quando a CIIP que inclui predição di- recional é utilizada, a SBT pode ser inutilizável. Quando uma CU não é particionada em partições como no caso onde a predição planar é utili- zada para intrapredição em CIIP, por outro lado, a SBT pode ser utili- zável. Então, um filtro de desbloqueio pode ser aplicado a um limite de partição em SBT. Exemplos Representativos de Configuração e Processamento
[00475] O seguinte descreve exemplos representativos de configu- rações e processos do codificador 100 e decodificador 200 acima des- critos.
[00476] A Figura 49 é um fluxograma que ilustra uma operação executada pelo codificador 100. Por exemplo, o codificador 100 inclui um circuito e uma memória acoplada no circuito. O circuito e memória incluídos no codificador 100 podem corresponder ao processador a1 e memória a2 ilustrados na Figura 40. O circuito no codificador 100 exe- cuta a operação ilustrada na Figura 49.
[00477] Especificamente, o circuito no codificador 100, em opera- ção, particiona um bloco de uma imagem corrente a ser codificada em uma pluralidade de partições que inclui uma primeira partição e uma segunda partição (S111). O circuito no codificador 100 executa trans- formada ortogonal somente na primeira partição dentre a primeira par- tição e a segunda partição (S112). O circuito no codificador 100 então aplica um filtro de desbloqueio a um limite entre a primeira partição e a segunda partição (S113).
[00478] Com tal configuração, o codificador 100 é capaz de apro- priadamente reduzir a distorção em um bloco. Consequentemente, o codificador 100 é capaz de suprimir a degradação em qualidade de imagem enquanto suprimindo a redução em eficiência de processa- mento.
[00479] Por exemplo, o bloco pode ser uma unidade de codificação que é quadrado na forma. A pluralidade de partições pode ser duas partições que são a primeira partição e a segunda partição. Cada uma da primeira partição e da segunda partição pode ser uma partição que é de uma forma retangular diferente de uma forma quadrada. O circui- to no codificador 100 pode particionar o bloco na pluralidade de parti- ções, particionando o bloco horizontalmente ou verticalmente.
[00480] Com tal configuração, o codificador 100 é capaz de apro- priadamente reduzir a distorção que ocorre verticalmente ou horizon- talmente em uma unidade de codificação.
[00481] Por exemplo, o circuito no codificador 100 pode ainda es- pecificar o limite de acordo com se o bloco é particionado horizontal- mente ou verticalmente. Com tal configuração, o codificador 100 é ca- paz de apropriadamente especificar um limite entre duas partições de acordo com um modo de partição, por meio disto apropriadamente aplicando um filtro de desbloqueio ao limite.
[00482] Por exemplo, o circuito no codificador 100 pode particionar o bloco, executar a transformada ortogonal somente na primeira parti- ção, e aplicar o filtro de desbloqueio ao limite em um modo de trans- formada de sub-bloco (SBT). O modo de SBT é um modo de operação definido em pelo menos um padrão de codificação, incluindo codifica- ção de vídeo versátil (VVC).
[00483] Com tal configuração, o codificador 100 é capaz de aplicar, em um modo de SBT, um filtro de desbloqueio a um limite entre a pri- meira partição na qual a transformada ortogonal é executada e a se- gunda partição na qual a transformada ortogonal não é executada. Consequentemente, o codificador 100 é capaz de reduzir a distorção que ocorre em um bloco devido ao modo de SBT.
[00484] Por exemplo, o circuito no codificador 100 pode ainda de- terminar um valor que corresponde a cada um dos pixels na segunda partição para ser 0. Com tal configuração, o codificador 100 é capaz de processar, como uma partição que inclui somente valores que indi- cam zeros, uma partição na qual a transformada ortogonal não é exe- cutada. Consequentemente, é possível reduzir uma quantidade de co- dificação. Note que um valor que corresponde a cada pixel pode ser um resíduo de predição ou um valor de pixel.
[00485] Por exemplo, uma capacidade do filtro de desbloqueio a ser aplicado no limite pode ser a mesma que uma capacidade de um filtro de desbloqueio a ser aplicado a um limite entre dois blocos que são adjacentes um ao outro, pelo menos um dos dois blocos incluindo um coeficiente não zero. Com tal configuração, o codificador 100 é capaz de aplicar um filtro de desbloqueio a um limite entre duas partições no mesmo modo que aplicado a um limite entre dois blocos.
[00486] Note que o transformador 106 no codificador 100 pode exe- cutar um processo relativo à transformada ortogonal. Especificamente,
o transformador 106 pode particionar um bloco em uma pluralidade de partições e executar transformada ortogonal na primeira partição. O transformador 106 pode também determinar um valor que corresponde a cada um dos pixels na segunda partição para ser 0.
[00487] —Alternativamente, um filtro de loop 120 no codificador 100 pode executar um processo relativo a um filtro de desbloqueio. Especi- ficamente, o filtro de loop 120 pode aplicar um filtro de desbloqueio a um limite entre a primeira partição e a segunda partição. O filtro de loop 120 pode também especificar um limite. Alternativamente, o filtro de loop 120 pode operar como um filtro de desbloqueio.
[00488] A Figura 50 é um fluxograma que ilustra uma operação executada pelo decodificador 200. Por exemplo, o decodificador 200 inclui um circuito e memória acoplada no circuito. O circuito e memória incluídos no decodificador 200 podem corresponder ao processador b1 e memória b2 ilustrados na Figura 46. O circuito no decodificador 200 executa a operação ilustrada na Figura 50.
[00489] Especificamente, o circuito no decodificador 200, em ope- ração, particiona um bloco de uma imagem corrente a ser decodificada em uma pluralidade de partições, que inclui uma primeira partição e uma segunda partição (S121). O circuito no decodificador 200 executa uma transformada ortogonal inversa somente na primeira partição den- tre a primeira partição e a segunda partição (S122). O circuito no de- codificador 200 então aplica um filtro de desbloqueio a um limite entre a primeira partição e a segunda partição (S123).
[00490] Com tal configuração, o decodificador 200 é capaz de apropriadamente reduzir a distorção em um bloco. Consequentemen- te, o decodificador 200 é capaz de suprimir a degradação em qualida- de de imagem enquanto suprimindo a redução em eficiência de pro- cessamento.
[00491] Por exemplo, o bloco pode ser uma unidade de codificação que é quadrada na forma. A pluralidade de partições pode ser duas partições que são a primeira partição e a segunda partição. Cada uma da primeira partição e da segunda partição pode ser uma partição que é de uma forma retangular diferente de uma forma quadrada. O circui- to no decodificador 200 pode particionar o bloco na pluralidade de par- tições, particionando o bloco horizontalmente ou verticalmente.
[00492] Com tal configuração, o decodificador 200 é capaz de apropriadamente reduzir a distorção que ocorre verticalmente ou hori- zontalmente em uma unidade de codificação.
[00493] Por exemplo, o circuito no decodificador 200 pode ainda especificar o limite de acordo com se o bloco é particionado horizon- talmente ou verticalmente. Com tal configuração, o decodificador 200 é capaz de apropriadamente especificar um limite entre duas partições de acordo com um modo de partição, por meio disto apropriadamente aplicando um filtro de desbloqueio.
[00494] “Por exemplo, o circuito no decodificador 200 pode particio- nar o bloco, executar a transformada ortogonal inversa somente na primeira partição e aplicar o filtro de desbloqueio ao limite em um mo- do de transformada de sub-bloco (SBT). O modo de SBT é um modo de operação definido em pelo menos um padrão de codificação, que inclui codificação de vídeo versátil (VVC).
[00495] “Com tal configuração, o decodificador 200 é capaz de apli- car, em um modo de SBT, um filtro de desbloqueio a um limite entre a primeira partição na qual a transformada ortogonal inversa é executa- da e a segunda partição na qual a transformada ortogonal inversa não é executada. Consequentemente, o decodificador 200 é capaz de re- duzir a distorção que ocorre em um bloco devido ao modo de SBT.
[00496] Por exemplo, o circuito no decodificador 200 pode ainda determinar um valor que corresponde a cada um dos pixels na segun- da partição para ser 0. Com tal configuração, o decodificador 200 é capaz de processar, como uma partição que inclui somente valores que indicam zero, uma partição sobre a qual a transformada ortogonal inversa não é executada. Consequentemente, é possível reduzir uma quantidade de codificação. Note que um valor que corresponde a cada pixel pode ser um resíduo de predição ou um valor de pixel.
[00497] Por exemplo, uma capacidade do filtro de desbloqueio a ser aplicada ao limite pode ser a mesma que uma capacidade de um filtro de desbloqueio a ser aplicado a um limite entre dois blocos que são adjacentes um ao outro, pelo menos um dos dois blocos incluindo um coeficiente não zero.
[00498] Com tal configuração, o decodificador 200 é capaz de apli- car um filtro de desbloqueio a um limite entre duas partições no mes- mo modo que aplicado a um limite entre dois blocos.
[00499] — Note que o transformador inverso 206 no decodificador 200 pode executar um processo relativo à transformada ortogonal inversa. Especificamente, o transformador inverso 206 pode particionar um bloco em uma pluralidade de partições e executar a transformada or- togonal inversa na primeira partição. O transformador inverso 206 po- de também determinar um valor que corresponde a cada um dos pixels na segunda partição para ser O.
[00500] — Alternativamente, um filtro de loop 212 no decodificador 200 pode executar um processo relativo a um filtro de desbloqueio. Especi- ficamente, o filtro de loop 212 pode aplicar um filtro de desbloqueio a um limite entre a primeira partição e a segunda partição. O filtro de loop 212 pode também especificar um limite. Alternativamente, o filtro de loop 212 pode operar como um filtro de desbloqueio. Outros Exemplos
[00501] O codificador 100 e o decodificador 200 de acordo com ca- da uma das modalidades acima podem ser utilizados como um codifi- cador de imagem e um decodificador de imagem, respectivamente, ou podem ser utilizados como um codificador de vídeo e um decodificador de vídeo, respectivamente.
[00502] O processo de filtragem de desbloqueio executado em um limite de partição pode ser executado pelo determinador de limite 1201, determinador de filtro 1203, executor de filtragem 1205, determi- nador de processamento 1208, determinador de característica de filtro 1207, e comutadores 1202, 1204, e 1206, como é o caso em um pro- cesso de filtragem de desbloqueio executado em um limite de bloco. O filtro de loop 212 no decodificador 200 pode incluir estes elementos.
[00503] O codificador 100 ou decodificador 200 pode executar um ou mais dos processos acima descritos e outro dispositivo pode execu- tar os processos restantes. Alternativamente, o codificador 100 ou de- codificador 200 pode incluir um ou mais dos elementos acima descri- tos e outro dispositivo pode incluir os elementos restantes.
[00504] “Um ou mais dos exemplos acima descritos podem ser utili- zados como um método de codificação, um método de decodificação, um método de aplicação de filtro de desbloqueio, ou outro método.
[00505] “Cada um dos elementos pode estar configurado de hardwa- re dedicado ou pode ser implementado executando um programa de software adequado para o elemento. Cada um dos elementos pode ser implementado por um executor de programa tal como uma CPU ou um processador que lê e executa um programa de software gravado em um meio de gravação tal como um disco rígido ou uma memória de semicondutor.
[00506] Especificamente, o codificador 100 e o decodificador 200 podem cada um incluir um circuito de processamento, e um armaze- namento que está eletricamente acoplado no circuito de processamen- to e acessível do circuito de processamento. Por exemplo, o circuito de processamento corresponde ao processador a1 ou bi e o armazena- mento corresponde à memória a2 ou b2.
[00507] O circuito de processamento inclui pelo menos um do hardware dedicado ou do executor de programa, e executa o proces- samento utilizando o armazenamento. Se o circuito de processamento incluir um executor de programa, o armazenamento armazena um programa de software a ser executado pelo executor de programa.
[00508] Aqui, o software o qual implementa o codificador 100 ou o decodificador 200 acima descrito, por exemplo, é um programa como segue.
[00509] Por exemplo, o programa pode fazer com que um compu- tador execute um método de codificação que inclui: particionar um blo- co de uma imagem corrente a ser codificada em uma pluralidade de partições que inclui uma primeira partição e uma segunda partição que são adjacentes uma à outra; executar transformada ortogonal somente na primeira partição dentre a primeira partição e a segunda partição; e aplicar um filtro de desbloqueio a um limite entre a primeira partição e a segunda partição.
[00510] Por exemplo, o programa pode fazer com que um compu- tador execute um método de decodificação que inclui: particionar um bloco de uma imagem corrente a ser decodificada em uma pluralidade de partições que inclui uma primeira partição e uma segunda partição que são adjacentes uma à outra; executar transformada ortogonal in- versa somente na primeira partição dentre a primeira partição e a se- gunda partição; e aplicar um filtro de desbloqueio a um limite entre a primeira partição e a segunda partição.
[00511] Os elementos podem ser circuitos como acima descrito. Estes circuitos podem constituir um circuito como um todo, ou podem ser circuitos separados. Cada um dos elementos pode ser implemen- tado como um processador de uso geral ou por um processador dedi- cado.
[00512] Os processos executados por um elemento específico po-
dem ser executados por um diferente elemento. A ordem de executar os processos pode ser mudada ou os processos podem ser executa- dos em paralelo. Um codificador / decodificador pode incluir o codifica- dor 100 e o decodificador 200.
[00513] Os números ordinais tal como o primeiro e o segundo utili- zados na descrição podem ser substituídos um pelo outro onde neces- sário. Um novo número ordinal pode ser provido ou qualquer um dos números ordinais existentes pode ser removido dos elementos, por exemplo.
[00514] O acima descreveu os aspectos do codificador 100 e do decodificador 200 com base nas modalidades, porém os aspectos do codificador 100 e do decodificador 200 não estão limitados às modali- dades. Os aspectos do codificador 100 e do decodificador 200 podem também abranger várias modificações que podem ser concebidas por aqueles versados na técnica para as modalidades, e modalidades conseguidas combinando elementos em diferentes modalidades, sem afastar do escopo da presente descrição.
[00515] Pelo menos um aspecto aqui descrito pode ser implemen- tado em combinação com pelo menos um ou mais dos outros aspectos de acordo com a presente descrição. Além disso, um ou mais dos pro- cessos nos fluxogramas, um ou mais dos elementos constituintes dos aparelhos, e parte da sintaxe descrita em pelo menos um aspecto aqui descrito podem ser implementados em combinação com outros aspec- tos. Implementações e Aplicações
[00516] 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, 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 pro- grama) gravado em um meio de gravação tal como uma ROM. O sof- tware pode ser distribuído. O software pode ser gravado em uma vari- edade 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 sof- tware podem ser empregadas.
[00517] 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 atra- vé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 pro- cessadores. Em outras palavras, um processamento integrado pode ser executado, e, alternativamente, um processamento descentraliza- do pode ser executado.
[00518] 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 tam- bém incluídos dentro do escopo das modalidades da presente descri- ção.
[00519] 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 ima- gem que emprega um método de codificação de imagem, um decodifi- cador de imagem que emprega o método de decodificação de ima- gem, ou um codificador-decodificador de imagem que inclui tanto o codificador de imagem quanto o decodificador de imagem. Outras con- figurações de tal sistema podem ser modificadas em uma base caso a caso. Exemplos de Utilização
[00520] A Figura 51 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 está dividida em células de tamanhos desejados, e esta- ções de base ex106, ex107, ex108, ex109, e ex110, as quais são es- tações sem fio fixas no exemplo ilustrado, estão localizadas em res- pectivas células.
[00521] No sistema de provisão de conteúdo ex100, dispositivos que incluem um computador ex111, dispositivo de jogos ex112, câme- ra ex113, utensílio doméstico ex114, e smartphone ex115 estão co- nectados na Internet ex101 através de um provedor de serviço de in- ternet ex102 ou rede de comunicações ex104 e estações de 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 indi- retamente conectados juntos através de uma rede telefônica ou uma comunicação de campo próximo ao invés de através de estações de base ex106 até ex110. Ainda, um servidor de fluxo ex103 pode estar conectado a dispositivos que incluem o computador ex111, dispositivo de jogos ex112, câmera ex113, utensílio domésticos ex114, e smar- tphone ex115 através, por exemplo, da internet ex101. O servidor de fluxo ex103 pode também estar conectado, por exemplo, a um terminal em um hotspot no avião ex117 através do satélite ex116.
[00522] Note que, ao invés de estações de base ex106 até ex110, pontos de acesso sem fio ou hotspots podem ser utilizados. O servidor de fluxo ex103 pode estar conectado na rede de comunicações ex104 diretamente ao invés de através da internet ex101 ou provedor de ser- viços de internet ex102, e pode estar conectado no avião ex117 dire- tamente ao invés de através do satélite ex116.
[00523] A câmera ex113 é um dispositivo capaz de capturar ima- gens estáticas e vídeo, tal como uma câmera digital. O smartphone ex115 é um dispositivo de smartphone, telefone celular, ou telefone de sistema portátil pessoal (PHS) que pode operar sob os padrões de sis- tema de comunicações móveis dos sistemas 2G, 3G, 3.9G, e 4G, as- sim como o sistema 5G de próxima geração.
[00524] O utensílio doméstico ex114 é, por exemplo, um refrigera- dor ou um dispositivo incluído em um sistema de cogeração de célula de combustível doméstico.
[00525] 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 ao servidor de fluxo ex103 atra- vés da, por exemplo, estação de base ex106. Quando em fluxo ao vi- vo, um terminal (por exemplo, computador ex111, dispositivo de jogos ex112, câmera ex113, utensílio doméstico ex114, smartphone ex115, ou um terminal no avião ex117) pode executar o processamento de codificação descrito nas modalidades acima em conteúdo de imagem estática ou de vídeo capturado por um usuário através do terminal, pode multiplexar os 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.
[00526] O servidor de fluxo ex103 transmite em fluxo os dados de conteúdo transmitidos para clientes que solicitam o fluxo. Exemplos de clientes incluem o computador ex111, dispositivo de jogos ex112, câà- mera ex113, utensílio doméstico ex114, smartphone ex115 e terminais dentro do avião ex117, os quais são capazes de decodificar os dados codificados acima descritos. 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 decodifica- dor de imagem de acordo com um aspecto da presente descrição. Processamento Descentralizado
[00527] 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 faz fluxo do conteúdo através de uma rede que conecta múltiplos servidores de borda localizados através do mundo. Em uma CDN, um servidor de borda fisicamente próximo do cliente pode ser dinamicamente designado para o cliente. O conteúdo é colocado em cache e em fluxo para o servidor de borda para reduzir os tempos de carga. Em caso de, por exemplo, algum tipo de um erro ou uma mudança em conectividade devido a, por exemplo, um pico no tráfego, é possível executar o fluxo de dados estavelmente em altas velocidades já que é possível evitar as partes afetadas da rede, por exemplo, dividindo o processamento entre uma pluralidade de servidores de borda ou comutando os deveres de fluxo para um diferente servidor de borda, e continuando o fluxo.
[00528] A descentralização não está limitada a apenas a divisão do processamento para fluxo; a codificação dos dados capturados pode ser dividida entre e executada pelos terminais, no lado do servidor, ou ambos. Em um exemplo, em codificação típica, o processamento é exe- cutado 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 de- tectando a carga de codificação. O segundo loop é para processamento que mantém a qualidade de imagem e aperfeiçoa a eficiência de codifi-
caçã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 do servidor que recebeu o conteúdo executar o segundo loop da codificação. Em tal caso, quando do recebimento de uma solici- tação de decodificação, é possível que os dados codificados que resul- tam do primeiro loop executado por um terminal sejam recebidos e re- produzidos em outro terminal em aproximadamente tempo real. Isto torna possível realizar um fluxo uniforme em tempo real.
[00529] Em outro exemplo, a câmera ex113 ou similares extrai uma quantidade de características (uma quantidade de aspectos ou carac- terísticas) de uma imagem, comprime os dados relacionados à quanti- dade 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 con- teúdo) da imagem. Os dados de quantidade de características são es- pecificamente efetivos em aperfeiçoar a precisão e eficiência de predi- ção de vetor de movimento durante a segunda passagem de compres- são executada pelo servidor. Mais ainda, uma codificação que tem uma carga de processamento relativamente baixa, tal como codifica- ção de comprimento variável (VLC), pode ser manipulada pelo termi- nal, e a codificação que tem uma carga de processamento relativa- mente alta, tal como codificação aritmética binária adaptável ao con- texto (CABAC), pode ser manipulada pelo servidor.
[00530] 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, shop- ping, ou fábrica. Em tal caso, por exemplo, a codificação pode ser descentralizada dividindo as tarefas de processamento entre a plurali- dade 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.
[00531] 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 refe- renciados cruzados. Mais ainda, o servidor pode receber dados codifi- cados dos terminais, mudar a relação de referência entre itens de da- dos 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.
[00532] Mais ainda, o servidor pode transmitir um fluxo de dados de vídeo após executar transcodificação para converter o formato de codi- ficaçã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.
[00533] Neste modo, a codificação pode ser executada por um ter- minal ou um ou mais servidores. Consequentemente, apesar do dispo- sitivo que executa a codificação ser referido como um "servidor" ou "terminal" na descrição seguinte, alguns ou todos os processos execu- tados 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
[00534] “Houve um aumento em utilização de imagens ou vídeos combinados de imagens ou vídeos de diferentes cenas concorrente- mente capturadas ou a 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 na, por exemplo, relação posicional relativa se- paradamente obtida entre os terminais, ou regiões em um vídeo que tem pontos de características coincidentes.
[00535] 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 codifi- cada 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 uma geometria tridimensional de uma cena com base no vídeo da mesma cena capturada de diferentes ângulos. O servidor pode se- paradamente codificar dados tridimensionais gerados de, por exemplo, uma nuvem de pontos, e pode, com base em resultado de 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.
[00536] Isto permite o usuário desfrutar uma cena livremente sele- cionando vídeos que correspondem aos terminais de captura de vídeo, e permite o 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 como o vídeo correspondente, transmitir o vídeo e áudio multiplexa-
dos.
[00537] Em anos recentes, um conteúdo que é um composto do mundo real e um mundo virtual, tal como 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 uma codificação que tolera uma referência entre as duas imagens de ponto de vista, tal co- mo uma codificação de múltiplas visões (MVC), e alternativamente, pode codificar as imagens como fluxos separados sem referenciar. Quando as imagens são decodificadas como fluxos separados, os flu- xos podem ser sincronizados quando reproduzidos, de modo a recriar um espaço tridimensional virtual de acordo com o ponto de vista do usuário.
[00538] “No caso de imagens de AR, o servidor pode sobrepor in- formações de objetos virtuais que existem em um espaço virtual por sobre informações de câmeras que representam um espaço de mundo real, com base em uma posição ou movimento tridimensional da pers- pectiva do usuário. O decodificador pode obter ou armazenar informa- ções de objetos virtuais e dados tridimensionais, gerar imagens bidi- mensionais com base no movimento da perspectiva do usuário, e en- tão gerar dados sobrepostos conectando uniformemente as imagens. Alternativamente, o decodificador pode transmitir, para o servidor, o movimento da perspectiva do usuário além de uma solicitação para informações de objetos virtuais. O servidor pode gerar dados sobre- postos com base em dados tridimensionais armazenados no servidor de acordo com o movimento recebido, e codificar e transmitir em fluxo os dados sobrepostos gerados pelo decodificador. Note que os dados sobrepostos tipicamente incluem, além de valores RGB, um valor a que indica transparência, e o servidor ajusta o valor a para seções ou- tras que o objeto gerado dos dados tridimensionais para, por exemplo,
O, e pode executar a codificação enquanto estas seções são transpa- rentes. 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.
[00539] A decodificação de dados similarmente transmitidos em flu- xo pode ser executada pelo cliente (por exemplo, os terminais), no la- do de servidor, ou dividido entre estes. Em um exemplo, um terminal pode transmitir uma solicitação de recepção para um servidor, o con- teú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 ima- gem descentralizando o processamento e apropriadamente selecio- nando o conteúdo independentemente da capacidade de processa- mento 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 de uma imagem tal como telas lado a lado obtidas dividindo a imagem, pode ser decodificada e exibida em um terminal pessoal ou terminais de um espectador ou es- pectadores da TV. Isto torna possível que os espectadores comparti- lhem uma visualização de imagem grande assim como para que cada espectador verifique em sua área designada ou inspecione uma região em mais detalhes adicionais de perto.
[00540] Em situações nas quais uma pluralidade de conexões sem fio é possível sobre distâncias próximas, médias, e distantes, internas ou externas, pode ser possível uniformemente receber um conteúdo utilizando um padrão de sistema de fluxo tal como MPEG-DASH. O usuário pode comutar entre os dados em tempo real enquanto livre- mente selecionando um decodificador ou parelho de display que inclui o terminal do usuário, displays dispostos internamente ou externamen-
te, etc. Mais ainda, utilizando, por exemplo, informações sobre a posi- ção do usuário, a decodificação pode ser executada enquanto comu- tando qual terminal manipula 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á em movimento em rota para um destino, so- bre a parede de um prédio próximo na qual um dispositivo é capaz de exibir um 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 os dados codificados são colocados em cache em um servidor rapidamente acessível 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
[00541] A comutação de conteúdo será descrita com referência a um fluxo escalável, ilustrado na Figura 52, o qual é codificado em 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 uso da escalabilidade temporal e/ou espacial de um fluxo, a qual é conseguida por divisão em e codificação de camadas, como ilustrado na Figura 52. Note que pode existir uma pluralidade de fluxos individu- ais que são o 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 do lado do decodi- ficador, e fatores externos, tal como a largura de banda de comunica- ção, o lado do decodificador pode livremente comutar entre conteúdo de baixa resolução e conteúdo de alta resolução enquanto decodifi- cando. 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 dispositi- vo pode simplesmente decodificar o mesmo fluxo até uma diferente camada, o que reduz a carga de lado de servidor.
[00542] 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 aci- ma da camada de base, a camada de melhoramento pode incluir me- tadados com base em, por exemplo, informações estatísticas sobre a imagem. O lado de decodificador pode gerar um conteúdo de alta qua- lidade 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 um não linear, como utilizado no processamento de su- perresolução, ou informações que identificam um valor de parâmetro em processamento de filtro, aprendizado de máquina, ou método de menores quadrados utilizados em processamento de superresolução.
[00543] —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 se- lecionando uma tela lado a lado para decodificar. Ainda, armazenando um atributo do objeto (pessoa, carro, bola, etc.) e uma posição do ob- jeto 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 incluem aquele objeto. Por exemplo, como ilustrado na Figura 53, os metadados podem ser armazenados utilizando uma estrutura de ar-
mazenamento de dados diferente de dados de pixel, tal como uma mensagem SEI (informações de melhoramento suplementares) em HEVC. Estes metadados indicam, por exemplo, a posição, tamanho, ou cor do objeto principal.
[00544] Os metadados podem ser armazenados em unidades de uma pluralidade de imagens, tal como fluxo, sequência, ou unidades de acesso randômico. O lado de decodificador pode obter, por exem- plo, o tempo no qual uma pessoa específica aparece no vídeo, e ajus- tando as informações de tempo com informações de unidade de ima- gem, pode identificar uma imagem na qual o objeto está presente, e pode determinar a posição do objeto na imagem. Otimização de Webpage
[00545] A Figura 54 ilustra um exemplo de uma tela de display de uma webpage sobre o computador ex111, por exemplo. A Figura 55 ilustra um exemplo de uma tela de display de uma webpage sobre o smartphone ex115, por exemplo. Como ilustrado na Figura 54 e Figura 55, uma webpage pode incluir uma pluralidade de conexões de ima- gem que são conexões para o 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 sobre a tela, até que o usuário explicitamente selecione uma conexão de imagem, ou até que a conexão de imagem esteja no centro aproxi- mado 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 |; pode exibir um vídeo tal como um gif animado utilizando uma pluralidade de imagens estáticas ou imagens |; ou pode receber somente a camada de base, e decodificar e exibir o vídeo .
[00546] “Quando uma conexão de imagem é selecionada pelo usuá- rio, o aparelho de display executa decodificação enquanto, por exem-
plo, dando a prioridade mais alta para a camada de base. Note que se existirem informações no código HTML da webpage indicando que o conteúdo é escalável, o aparelho de display pode decodificar até a camada de melhoramento. Ainda, de modo a garantir uma 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 é decodifi- cada e o ponto no tempo no qual a imagem decodificada é exibida (is- to é, o retardo entre o início da decodificação do conteúdo para a exi- bição do conteúdo) decodificando e exibindo somente imagens de re- ferência direta (imagem |, imagem P, imagem B de referência direta). Mais ainda, o aparelho de display pode propositalmente ignorar a rela- ção de referência entre as imagens, e decodificar grosseiramente to- das as imagens B e P como imagens de referência direta, e então executar decodificação normal conforme o número de imagens recebi- das ao longo do tempo aumenta. Direção Autônoma
[00547] — Quando transmitindo e recebendo uma imagem estática ou dados de vídeo tais como informações de mapa bi ou tridimensional para direção autônoma ou direção assistida de um automóvel, o termi- nal de recepção pode receber, além de dados de imagens que perten- cem a uma ou mais camadas, informações sobre, por exemplo, o cli- ma ou construção de estradas como metadados, e associar os meta- dados com os dados da imagem quando decodificando. Note que os metadados podem ser atribuídos por camada e, alternativamente, po- dem ser simplesmente ser multiplexados com os dados da imagem.
[00548] Em tal caso, uma vez como um 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 enquan- to comutando entre as estações de base entre as estações de base ex106 até 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 de mapa, por exemplo, são atualizadas.
[00549] No sistema de provisão de conteúdo ex100, o cliente pode receber, decodificar, e reproduzir, em tempo real, as informações codi- ficadas transmitidas pelo usuário. Fluxo de Conteúdo Individual
[00550] No sistema de provisão de conteúdo ex100, além de alta qualidade de imagem, conteúdo longo distribuído por uma entidade de distribuição de vídeo, fluxo de unidifusão ou multidifusão de baixa qua- lidade de imagem, e curto conteúdo de um indivíduo é também possí- vel. Tal conteúdo de indivíduos é provável de adicionalmente aumentar em popularidade. O servidor pode primeiro executar um processamen- to de edição no conteúdo antes do processamento de codificação, de modo a refinar o conteúdo individual. Isto pode ser conseguido utili- zando a seguinte configuração, por exemplo.
[00551] 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 significa- do, e/ou processamento de detecção de objetos. Então, com base no resultado do processamento de reconhecimento, o servidor - ou quan- do 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 tais como cenas que são baixas em luminosidade comparadas com outras imagens, ou fora de foco; ajuste da borda do objeto; e ajuste de tonalidade de cor. O servidor codifica os dados editados com base no resultado da edi- ção. É conhecido que vídeos excessivamente longos tendem a rece- ber menos visualizações. Consequentemente, de modo a manter o conteúdo dentro de um comprimento específico 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 resu- mo de vídeo com base em um resultado de uma análise do significado de uma cena.
[00552] — Podem existir casos nos quais o conteúdo individual pode incluir um conteúdo que infringe um direito autoral, direitos morais, di- reitos 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 codi- ficação, o servidor pode, por exemplo, editar imagens de modo a des- focar faces de pessoas na periferia da tela ou desfocar o interior de uma casa, por exemplo. Ainda, o servidor pode ser 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 codi- ficaçã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 processado. O servidor pode processar a região especifi- cada, por exemplo, substituindo a região por uma diferente imagem, ou desfocando a região. Se a região incluir uma pessoa, a pessoa po- de ser rastreada na imagem móvel, e a região da cabeça da pessoa pode ser substituída por outra imagem conforme a pessoa move.
[00553] “Como existe uma demanda para visualização em tempo real de conteúdo produzido por indivíduos, o qual tende a ser pequeno em tamanho de dados, o decodificador pode primeiro receber a cama- da de base como a prioridade mais alta, e executar decodificação e reprodução, apesar disto poder diferir dependendo da largura de ban- da. 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 re- produção, o decodificador pode reproduzir um vídeo de alta qualidade de imagem incluindo a camada de melhoramento. Se o fluxo for codifi- cado utilizando tal codificação escalável, o vídeo pode ser de baixa qualidade quando em um estado não selecionado ou no início do ví- deo, mas este pode oferecer uma experiência na qual a qualidade da imagem do fluxo progressivamente aumenta em um modo inteligente. Isto não está limitado a apenas codificação escalável; a mesma expe- riência pode ser oferecida configurando um único fluxo de um fluxo de baixa qualidade reproduzido pela primeira vez e um segundo fluxo co- dificado utilizando o primeiro fluxo como uma referência.
[00554] — Outros Exemplos de Implementação e Aplicação
[00555] A codificação e decodificação podem ser executadas por LSI (circuito de integração de grande escala) ex500 (ver Figura 51), o qual está tipicamente incluído em cada terminal. O LSI ex500 pode estar configurado de um único chip ou uma pluralidade de chips. O software para codificar e decodificar imagens móveis pode ser integra- do em algum tipo de meio de gravação (tal como um CD-ROM, um disco flexível, ou um disco rígido) que é legível pelo, por exemplo, computador ex111, e a codificação e decodificação podem ser execu- tas 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 co-
dificados por LSI ex500 incluído no smartphone ex115.
[00556] “Note que o LSI ex500 pode estar configurado para fazer download e ativar uma aplicação. Em tal caso, o terminal primeiro de- termina 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 então obtém e reproduz o conteúdo.
[00557] 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) descrito nas modalidades acima podem ser implementados em um sistema de transmissão digital. O mesmo pro- cessamento de codificação e processamento de decodificação podem ser aplicados para transmitir e receber ondas de rádio transmitidas so- brepostas com dados de áudio e vídeo multiplexado utilizando, por exemplo, um satélite, apesar disto ser impulsionado na direção de mul- tidifusão, enquanto que unidifusão é mais fácil com o sistema de provi- são de conteúdo ex100. Configuração de Hardware
[00558] A Figura 56 ilustra detalhes adicionais do smartphone ex115 mostrado na Figura 51. A Figura 57 ilustra um exemplo de con- figuração do smartphone ex115. O smartphone ex115 inclui uma ante- na 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 vídeo capturado pela câmera ex465 e 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 voz ou outro áudio, uma unidade de entrada de áudio ex456 tal como um microfone para entra- da de áudio, uma memória ex467 capaz de armazenar dados decodifi- cados tais como vídeo ou imagens estáticas capturados, áudio grava- do, vídeo ou imagens estáticas recebidas, e correio, assim como da- dos decodificados, e a 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 utilizada ao invés da memória ex467.
[00559] — O controlador principal ex460, o qual abrangentemente con- trola o display ex458 e interface de usuário ex466, circuito de fonte de alimentação 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 são conectados através do bar- ramento ex470.
[00560] — Quando o usuário liga o botão de energia do circuito de fon- te de alimentação ex461, o smartphone ex115 é energizado em um estado operável, e cada componente é suprido com energia de um pa- cote de bateria.
[00561] O smartphone ex115 executa um processamento para, por exemplo, chamada e transmissão de dados, com base no controle executado pelo controlador principal ex460, o qual inclui uma CPU, ROM, e RAM. Quando fazendo chamadas, um sinal de áudio gravado pela 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 de dispersão é 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 con- vertidos analógico-digital, processados em espectro de dispersão in- verso pelo modulador / demodulador ex452, convertidos em um sinal de áudio analógico pelo processador de sinal de áudio ex454, e então emitidos da unidade de saída de áudio ex457. No modo de transmis- são de dados, texto, imagem estática, ou dados de vídeo podem ser transmitidos sob controle do controlador principal ex460 através do controlador de entrada de interface de usuário ex462 como base na operação da interface de usuário ex466 do corpo principal, por exem- plo. Um processamento de transmissão e recepção similar é executa- do. No modo de transmissão de dados, quando 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 ar- mazenado 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 codi- fica um sinal de áudio gravado pela unidade de entrada de áudio ex456 enquanto a câmera ex465 está capturando um vídeo ou ima- gem estática, e transmite os dados de áudio codificados para o multi- plexador / demultiplexador ex453. O multiplexador / demultiplexador ex453 multiplexa os dados de vídeo codificados e os dados de áudio codificados utilizando um esquema determinado, modula e converte os dados utilizando o modulador / demodulador (circuito de modulador / demodulador) ex452 e o transmissor / receptor ex451 e transmite o resultado através da antena ex450. O esquema determinado pode ser predeterminado.
[00562] — Quando um vídeo anexado em um email ou um 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 da- dos 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 co- dificados para o processador de sinal de áudio ex454 através do bar- ramento síncrono ex470. O processador de sinal de vídeo ex455 de- codifica 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 um 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 um fluxo em tempo real está se tornando cada vez mais popular, existem casos nos quais a repro- duçã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 nos dados de vídeo, é recebida.
[00563] — Apesar do smartphone ex115 ter sido utilizado no exemplo acima, outras implementações são concebíveis: um terminal de trans- ceptor que inclui tanto um codificador quanto um decodificador; um terminal de transmissor que inclui somente um codificador; e um ter- minal de 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 multiple-
xados com dados outros que dados de áudio, tal como dados de texto relativos ao vídeo. Ainda, os próprios dados do vídeo ao invés dos da- dos multiplexados podem ser recebidos ou transmitidos.
[00564] — Apesar do controlador principal ex460 que inclui uma CPU, ser descrito como controlando os processos de codificação ou decodi- ficação, vários terminais frequentemente incluem GPUs. Consequen- temente, uma configuração é aceitável na qual uma grande área é processada de uma vez fazendo utilização da capacidade de desem- penho 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 per- mitir uma utilização comum pela CPU e GPU. Isto torna possível en- curtar o tempo de codificação, manter a natureza de tempo real do flu- xo e reduzir o retardo. Especificamente, o processamento relativo à estimativa de movimento, filtragem de desbloqueio, deslocamento adaptável de amostra (SAO), e transformada / quantização pode ser efetivamente executado pela GPU ao invés da CPU em unidades de imagens, por exemplo, todas de uma vez.
[00565] A presente descrição é aplicável a, por exemplo, receptores de televisão, gravadores de vídeo digital, sistemas de navegação de carro, telefones móveis, câmeras digitais, câmeras de vídeo digital, sistemas de conferência de vídeo, e espelhos de elétrons.
MARCAS DE REFERÊNCIA NOS DESENHOS 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ísticas de filtro 1208 determinador de processo al, b1 processador a2, b2 memória
Claims (14)
1. Codificador, caracterizado pelo fato de que compreende: um circuito; e uma memória acoplada no circuito, em que o circuito, em operação: particiona um bloco de uma imagem corrente a ser codifi- cada em uma pluralidade de partições, que inclui uma primeira parti- ção e uma segunda partição que são adjacentes uma à outra; executa uma transformada ortogonal somente na primeira partição dentre a primeira partição e a segunda partição; e aplica um filtro de desbloqueio a um limite entre a primeira partição e a segunda partição.
2. Codificador de acordo com a reivindicação 1, caracteri- zado pelo fato de que o bloco é uma unidade de codificação que é quadrado na forma, a pluralidade de partições são duas partições que são a primeira partição e a segunda partição, cada uma da primeira partição e da segunda partição é uma partição que é de uma forma retangular diferente de uma forma quadrada, e o circuito particiona o bloco na pluralidade de partições par- ticionando o bloco horizontalmente ou verticalmente.
3. Codificador de acordo com a reivindicação 2, caracteri- zado pelo fato de que o circuito ainda especifica o limite de acordo com se o bloco é particionado horizontalmente ou verticalmente.
4. Codificador de acordo com qualquer uma das reivindica- ções 1 a 3, caracterizado pelo fato de que o circuito particiona o bloco, executa a transformada orto-
gonal somente na primeira partição e aplica o filtro de desbloqueio ao limite em um modo de transformada de sub-bloco (SBT) o qual é um modo de operação definido em pelo menos um padrão de codificação, que inclui codificação de vídeo versátil (VVC).
5. Codificador de acordo com qualquer uma das reivindica- ções 1 a 4, caracterizado pelo fato de que o circuito ainda determina um valor que corresponde a cada um dos pixels na segunda partição para ser O.
6. Codificador de acordo com qualquer uma das reivindica- ções 1 a 5, caracterizado pelo fato de que uma capacidade do filtro de desbloqueio a ser aplicado ao limite é a mesma que uma capacidade de um filtro de desbloqueio a ser aplicado a um limite entre dois blocos que são adjacentes um ao outro, pelo menos um dos dois blocos incluindo um coeficiente não zero.
7. Decodificador, caracterizado pelo fato de que compreen- de: um circuito; e uma memória acoplada no circuito, em que o circuito, em operação: particiona um bloco de uma imagem corrente a ser decodi- ficado em uma pluralidade de partições que inclui uma primeira parti- ção e uma segunda partição que são adjacentes uma à outra; executa uma transformada ortogonal inversa somente na primeira partição dentre a primeira partição e a segunda partição; e aplica um filtro de desbloqueio a um limite entre a primeira partição e a segunda partição.
8. Decodificador de acordo com a reivindicação 7, caracte- rizado pelo fato de que o bloco é uma unidade de codificação que é quadrado em forma, a pluralidade de partições são duas partições que são a primeira partição e a segunda partição, cada uma da primeira partição e da segunda partição é uma partição que é de uma forma retangular diferente de uma forma quadrada, e o circuito particiona o bloco na pluralidade de partições, particionando o bloco horizontalmente ou verticalmente.
9. Decodificador de acordo com a reivindicação 8, caracte- rizado pelo fato de que o circuito ainda especifica o limite de acordo com se o bloco é particionado horizontalmente ou verticalmente.
10. Decodificador de acordo com qualquer uma das reivin- dicações 7 a 9, caracterizado pelo fato de que o circuito particiona o bloco, executa a transformada orto- gonal inversa somente na primeira partição e aplica o filtro de desblo- queio ao limite em um modo de transformada de sub-bloco (SBT) o qual é um modo de operação definido em pelo menos um padrão de codificação que inclui codificação de vídeo versátil (VVC).
11. Decodificador de acordo com qualquer uma das reivin- dicações 7 a 10, caracterizado pelo fato de que o circuito ainda determina um valor que corresponde a cada um dos pixels na segunda partição para ser O.
12. Decodificador de acordo com qualquer uma das reivin- dicações 7 a 11, caracterizado pelo fato de que uma capacidade do filtro de desbloqueio a ser aplicado ao limite é a mesma que uma capacidade de um filtro de desbloqueio a ser aplicado a um limite entre dois blocos que são adjacentes um ao outro, pelo menos um dos dois blocos incluindo um coeficiente não zero.
13. Método de codificação, caracterizado pelo fato de que compreende: particionar um bloco de uma imagem corrente a ser codifi- cada em uma pluralidade de partições que inclui uma primeira partição e uma segunda partição que são adjacentes uma à outra; executar uma transformada ortogonal somente na primeira partição dentre a primeira partição e a segunda partição; e aplicar um filtro de desbloqueio a um limite entre a primeira partição e a segunda partição.
14. Método de decodificação, caracterizado pelo fato de que compreende: particionar um bloco de uma imagem corrente a ser decodi- ficada em uma pluralidade de partições que inclui uma primeira parti- ção e uma segunda partição que são adjacentes uma à outra; executar uma transformada ortogonal inversa somente na primeira partição dentre a primeira partição e a segunda partição; e aplicar um filtro de desbloqueio a um limite entre a primeira partição e a segunda partição.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962806160P | 2019-02-15 | 2019-02-15 | |
US62/806,160 | 2019-02-15 | ||
PCT/JP2020/004536 WO2020166480A1 (ja) | 2019-02-15 | 2020-02-06 | 符号化装置、復号装置、符号化方法、および復号方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
BR112021011019A2 true BR112021011019A2 (pt) | 2021-08-31 |
Family
ID=72044826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112021011019-4A BR112021011019A2 (pt) | 2019-02-15 | 2020-02-06 | Codificador, decodificador, método de codificação e método de decodificação |
Country Status (7)
Country | Link |
---|---|
US (1) | US20210352288A1 (pt) |
JP (3) | JPWO2020166480A1 (pt) |
KR (1) | KR20210122782A (pt) |
CN (1) | CN113302922A (pt) |
BR (1) | BR112021011019A2 (pt) |
MX (1) | MX2021008103A (pt) |
WO (1) | WO2020166480A1 (pt) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020262992A1 (ko) * | 2019-06-25 | 2020-12-30 | 한국전자통신연구원 | 영상 부호화/복호화 방법 및 장치 |
WO2023055547A1 (en) * | 2021-09-30 | 2023-04-06 | Tencent America LLC | Adaptive transforms for compound inter-intra prediction modes |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI627857B (zh) * | 2012-06-29 | 2018-06-21 | Sony Corp | Image processing device and method |
CN104380740A (zh) * | 2012-06-29 | 2015-02-25 | 索尼公司 | 编码装置、编码方法、解码装置和解码方法 |
WO2014050731A1 (ja) * | 2012-09-28 | 2014-04-03 | ソニー株式会社 | 画像処理装置および方法 |
JP6244864B2 (ja) * | 2013-12-06 | 2017-12-13 | 富士通株式会社 | 動画像符号化装置、動画像符号化方法及び動画像符号化用コンピュータプログラム |
AU2014202921B2 (en) * | 2014-05-29 | 2017-02-02 | Canon Kabushiki Kaisha | Method, apparatus and system for de-blocking a block of video samples |
US20170078703A1 (en) * | 2015-09-10 | 2017-03-16 | Nokia Technologies Oy | Apparatus, a method and a computer program for video coding and decoding |
CN116708777A (zh) * | 2016-07-18 | 2023-09-05 | 韩国电子通信研究院 | 图像编码/解码方法和装置以及存储比特流的记录介质 |
US11356699B2 (en) * | 2019-01-11 | 2022-06-07 | Hfi Innovation Inc. | Method and apparatus of sub-block deblocking in video coding |
CN113330743A (zh) * | 2019-01-25 | 2021-08-31 | 华为技术有限公司 | 编码器、解码器及去块效应滤波器自适应的对应方法 |
JP7444159B2 (ja) * | 2019-02-27 | 2024-03-06 | ソニーグループ株式会社 | 画像処理装置及び画像処理方法 |
-
2020
- 2020-02-06 BR BR112021011019-4A patent/BR112021011019A2/pt unknown
- 2020-02-06 WO PCT/JP2020/004536 patent/WO2020166480A1/ja active Application Filing
- 2020-02-06 KR KR1020217023686A patent/KR20210122782A/ko active Search and Examination
- 2020-02-06 JP JP2020572205A patent/JPWO2020166480A1/ja active Pending
- 2020-02-06 CN CN202080008992.6A patent/CN113302922A/zh active Pending
- 2020-02-06 MX MX2021008103A patent/MX2021008103A/es unknown
-
2021
- 2021-07-23 US US17/383,928 patent/US20210352288A1/en active Pending
-
2022
- 2022-09-06 JP JP2022141687A patent/JP7373040B2/ja active Active
-
2023
- 2023-10-20 JP JP2023181447A patent/JP7529874B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
US20210352288A1 (en) | 2021-11-11 |
CN113302922A (zh) | 2021-08-24 |
JP7529874B2 (ja) | 2024-08-06 |
JP7373040B2 (ja) | 2023-11-01 |
WO2020166480A1 (ja) | 2020-08-20 |
JP2023174956A (ja) | 2023-12-08 |
JPWO2020166480A1 (ja) | 2021-10-28 |
MX2021008103A (es) | 2021-08-05 |
TW202041004A (zh) | 2020-11-01 |
JP2022168052A (ja) | 2022-11-04 |
KR20210122782A (ko) | 2021-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020017423A1 (en) | Motion vector prediction for video coding | |
BR112020022773A2 (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 | |
BR112021001156A2 (pt) | sistema e método para codificação de vídeo | |
BR112021014711A2 (pt) | Codificador, decodificador, método de codificação e método de decodificação | |
BR112021004822A2 (pt) | codificador, decodificador, método de codificação e método de decodificação | |
AU2020259889A1 (en) | Encoding device, decoding device, encoding method, and decoding method | |
BR112020000876A2 (pt) | dispositivo codificador, dispositivo decodificador, método de codificação, e método de decodificação | |
BR112021009596A2 (pt) | codificador, decodificador, método de codificação, e método de decodificação | |
WO2019240050A1 (ja) | 符号化装置、復号装置、符号化方法および復号方法 | |
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 | |
JP7072088B2 (ja) | 符号化装置及び復号装置 | |
BR112021001245A2 (pt) | codificador, decodificador, método de codificação e método de decodificação | |
US11849139B2 (en) | Encoder, decoder, encoding method, and decoding method | |
BR112021011019A2 (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 | |
BR112021001890A2 (pt) | codificador, decodificador, método de codificação e método de decodificação | |
WO2020235586A1 (ja) | 符号化装置、復号装置、符号化方法及び復号方法 | |
WO2020179715A1 (ja) | 符号化装置、復号装置、符号化方法及び復号方法 | |
CN112514394B (zh) | 用于视频编码的系统和方法 | |
KR20220024007A (ko) | 부호화 장치, 복호 장치, 부호화 방법, 및 복호 방법 | |
BR122022013317A2 (pt) | Codificador, decodificador e meio legível por computador não transitório | |
BR122023027451A2 (pt) | Método de codificação e método de decodificação | |
BR122023027393A2 (pt) | Método de codificação e método de decodificação |