BR112021009686A2 - Método e dispositivo de intrapredição - Google Patents

Método e dispositivo de intrapredição Download PDF

Info

Publication number
BR112021009686A2
BR112021009686A2 BR112021009686-8A BR112021009686A BR112021009686A2 BR 112021009686 A2 BR112021009686 A2 BR 112021009686A2 BR 112021009686 A BR112021009686 A BR 112021009686A BR 112021009686 A2 BR112021009686 A2 BR 112021009686A2
Authority
BR
Brazil
Prior art keywords
samples
block
available
unit
component
Prior art date
Application number
BR112021009686-8A
Other languages
English (en)
Inventor
Xiang Ma
Haitao Yang
Jianle Chen
Original Assignee
Huawei Technologies Co., Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co., Ltd. filed Critical Huawei Technologies Co., Ltd.
Publication of BR112021009686A2 publication Critical patent/BR112021009686A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Color Television Systems (AREA)

Abstract

método e dispositivo de intrapredição. um método de intrapredição e aparelho para reconstrução de amostras de referência indisponíveis são fornecidos. o método inclui obter um modo de intrapredição de um bloco atual, derivando a disponibilidade de uma amostra de referência de um componente do bloco atual, substituindo amostras de referência indisponíveis usando amostras de referência disponíveis, derivando uma predição do bloco atual com base no modo de intrapredição e as amostras de referência substituídas, e reconstruindo o bloco atual com base na predição. o componente inclui um componente cb ou um componente cr. alternativamente, o componente inclui um componente croma. uma vez que o método deriva a disponibilidade da amostra de referência em cada componente, ele pode fornecer as informações disponíveis com mais precisão.

Description

MÉTODO E DISPOSITIVO DE INTRAPREDIÇÃO REFERÊNCIAS CRUZADAS A PEDIDOS RELACIONADOS
[0001] Este pedido reivindica prioridade para o Pedido de Patente Provisório dos EUA Nº. 62 / 770.736, protocolado em 21 de novembro de 2018, intitulado "Intra Prediction Method and Device", cuja divulgação é incorporada neste documento por referência em sua totalidade para todos os fins.
CAMPO TÉCNICO
[0002] As modalidades da presente invenção geralmente se referem ao campo da codificação de vídeo e, mais particularmente, ao campo do método e dispositivo de intrapredição.
ANTECEDENTES
[0003] A quantidade de dados de vídeo necessária para representar até mesmo um vídeo relativamente curto pode ser substancial, o que pode resultar em dificuldades quando os dados devem ser transmitidos ou de outra forma comunicados através de uma rede de comunicações com capacidade de largura de banda limitada. Assim, os dados de vídeo são geralmente compactados antes de serem comunicados pelas redes de telecomunicações existentes atualmente. O tamanho de um vídeo também pode ser um problema quando o vídeo é armazenado em um dispositivo de armazenamento porque os recursos de memória podem ser limitados. Os dispositivos de compactação de vídeo muitas vezes usam software e / ou hardware na origem para codificar os dados de vídeo antes da transmissão ou armazenamento, diminuindo assim a quantidade de dados necessária para representar imagens de vídeo digital. Os dados compactados são então recebidos no destino por um dispositivo de descompactação de vídeo que decodifica os dados de vídeo. Com recursos de rede limitados e demandas cada vez maiores de maior qualidade de vídeo, técnicas aprimoradas de compactação e descompactação que melhoram a taxa de compactação com pouco ou nenhum sacrifício na qualidade da imagem são desejáveis.
BREVE SUMÁRIO DA INVENÇÃO
[0004] As modalidades da presente divulgação fornecem aparelhos de intrapredição e métodos para codificar e decodificar uma imagem. As modalidades da presente divulgação não devem ser interpretadas como limitantes aos exemplos aqui elaborados.
[0005] De acordo com um primeiro aspecto da presente divulgação, um método inclui obter um modo de intrapredição de um bloco atual; derivar a disponibilidade de uma amostra de referência de um componente do bloco atual; substituir amostras de referência indisponíveis usando amostras de referência disponíveis; derivar uma predição do bloco atual com base no modo de intrapredição e as amostras de referência substituídas; e reconstruir o bloco atual com base na predição. Em uma modalidade, o componente inclui um componente Y, um componente Cb ou um componente Cr. Em outra modalidade, o componente inclui um componente Luma, ou um componente Croma.
[0006] Uma vez que o primeiro aspecto da presente divulgação deriva a disponibilidade da amostra de referência em cada componente, ele pode fornecer as informações disponíveis com mais precisão.
[0007] De acordo com uma implementação do primeiro aspecto, todas as amostras Cb no bloco reconstruído são marcadas como disponíveis; ou todas as amostras Cr no bloco reconstruído são marcadas como disponíveis.
[0008] Uma vez que a implementação do primeiro aspecto armazena as informações disponíveis para cada amostra em cada componente, ela pode fornecer as informações disponíveis com mais precisão no processo de intrapredição.
[0009] De acordo com um segundo aspecto da presente divulgação, um decodificador inclui circuitos de processamento configurados para realizar as etapas do método descrito acima.
[0010] De acordo com um terceiro aspecto da presente divulgação, um codificador inclui circuitos de processamento configurados para realizar as etapas do método descrito acima.
[0011] De acordo com um quarto aspecto da presente divulgação, um produto de programa de computador contém um código de programa quando executado por um processador realiza o método descrito acima.
[0012] De acordo com um quinto aspecto da presente divulgação, um decodificador para intrapredição inclui uma ou mais unidades de processamento e um meio de armazenamento legível por computador não transitório acoplado a uma ou mais unidades de processamento e instruções de programa de armazenamento executadas por um ou mais unidades de processamento para realizar o método descrito acima.
[0013] De acordo com um sexto aspecto da presente divulgação, um codificador para intrapredição inclui uma ou mais unidades de processamento e um meio de armazenamento legível por computador não transitório acoplado a uma ou mais unidades de processamento e instruções de programa de armazenamento executadas por um ou mais unidades de processamento para realizar o método descrito acima.
[0014] As modalidades da presente divulgação fornecem ainda um dispositivo de decodificação e um dispositivo de codificação para realizar os métodos acima.
[0015] Para fins de clareza, qualquer uma das modalidades anteriores pode ser combinada com qualquer uma ou mais das outras modalidades anteriores para criar uma nova modalidade dentro do escopo da presente divulgação.
[0016] Estas e outras características serão mais claramente compreendidas a partir da seguinte descrição detalhada tomada em conjunto com os desenhos e reivindicações anexos.
BREVE DESCRIÇÃO DOS DESENHOS
[0017] Para uma compreensão mais completa desta divulgação, é feita agora referência à seguinte breve descrição, tomada em conexão com os desenhos anexos e a descrição detalhada, em que números de referência semelhantes representam partes semelhantes.
[0018] FIG. 1A é um diagrama de blocos que ilustra um sistema de codificação de exemplo que pode implementar modalidades da presente divulgação.
[0019] FIG. 1B é um diagrama de blocos que ilustra outro sistema de codificação de exemplo que pode implementar modalidades da presente divulgação.
[0020] FIG. 2 é um diagrama de blocos que ilustra um codificador de vídeo de exemplo que pode implementar modalidades da presente divulgação.
[0021] FIG. 3 é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo que pode implementar modalidades da presente divulgação.
[0022] FIG. 4 é um diagrama esquemático de um dispositivo de rede de acordo com uma modalidade exemplar da presente divulgação.
[0023] FIG. 5 é um diagrama de blocos simplificado de um aparelho que pode ser usado como um ou ambos o dispositivo de origem e o dispositivo de destino da FIG. 1A de acordo com uma modalidade exemplar da presente divulgação.
[0024] FIG. 6 é uma descrição de algoritmo de intrapredição de H.265 / HEVC que pode ser utilizado na descrição da presente divulgação.
[0025] FIG. 7 é um diagrama gráfico que ilustra amostras de referência de acordo com uma modalidade exemplar da presente divulgação.
[0026] FIG. 8 é um diagrama gráfico que ilustra amostras de referências disponíveis e indisponíveis de acordo com uma modalidade exemplar da presente divulgação.
[0027] FIG. 9 é um fluxograma simplificado de derivação de um sinal reconstruído de acordo com uma modalidade exemplar da presente divulgação.
[0028] FIG. 10 é um fluxograma simplificado de derivação de um sinal de predição de acordo com uma modalidade exemplar da presente divulgação.
[0029] FIG. 11 é um diagrama gráfico que ilustra amostras em um bloco atual que são marcadas como disponíveis de acordo com uma modalidade exemplar da presente divulgação.
[0030] FIG. 12 é um diagrama gráfico que ilustra amostras em um bloco atual que são marcados como disponíveis na unidade N x N de acordo com uma modalidade exemplar da presente divulgação.
[0031] FIG. 13 é um diagrama gráfico que ilustra amostras no limite direito e limite inferior de um bloco atual que são marcadas como disponíveis de acordo com uma modalidade exemplar da presente divulgação.
[0032] FIG. 14 é um diagrama gráfico que ilustra amostras no limite direito e limite inferior de um bloco atual que são marcadas como disponíveis na unidade N de acordo com uma modalidade exemplar da presente divulgação.
[0033] FIG. 15 é um diagrama gráfico que ilustra amostras no limite direito e limite inferior de um bloco atual que são marcadas como disponíveis na unidade N x N de acordo com uma modalidade exemplar da presente divulgação.
[0034] FIG. 16 é um diagrama gráfico que ilustra um método de marcação de amostras de componentes de croma de acordo com uma modalidade exemplar da presente divulgação.
[0035] FIG. 17 é um diagrama de blocos que mostra uma estrutura de exemplo de um sistema de fornecimento de conteúdo 3100 que realiza um serviço de distribuição de conteúdo.
[0036] FIG. 18 é um diagrama de blocos que mostra uma estrutura de um exemplo de um dispositivo terminal.
DESCRIÇÃO DETALHADA DA INVENÇÃO
[0037] Deve ser entendido desde o início que, embora uma implementação ilustrativa de uma ou mais modalidades seja fornecida abaixo, os sistemas e / ou métodos divulgados podem ser implementados usando uma variedade de técnicas, sejam atualmente conhecidas ou existentes. A divulgação não deve de forma alguma ser limitada às implementações ilustrativas, desenhos e técnicas ilustradas abaixo, incluindo os projetos e implementações exemplares ilustrados e descritos neste documento, mas pode ser modificada dentro do escopo das reivindicações anexas, juntamente com seu escopo completo de equivalentes.
[0038] FIG. 1A é um diagrama de blocos esquemático que ilustra um sistema de codificação de exemplo 10 que pode utilizar técnicas de predição bidirecional. Como mostrado na FIG. 1A, o sistema de codificação 10 inclui um dispositivo de origem 12 que fornece dados de vídeo codificados para serem decodificados posteriormente por um dispositivo de destino 14. Em particular, o dispositivo de origem 12 pode fornecer os dados de vídeo ao dispositivo de destino 14 através de um meio legível por computador 16. O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um de uma ampla gama de dispositivos, incluindo desktops, laptops (ou seja, notebooks), tablets, decodificadores, aparelhos de telefone, como os chamados telefones "inteligentes", os chamados pads “inteligentes”, televisores, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivo de streaming, ou semelhantes. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio.
[0039] O dispositivo de destino 14 pode receber os dados de vídeo codificados para serem decodificados através de um meio legível por computador 16. O meio legível por computador 16 pode compreender qualquer tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados do dispositivo de origem 12 para o dispositivo de destino 14. Em um exemplo, o meio legível por computador 16 pode compreender um meio de comunicação para permitir que o dispositivo de origem 12 transmita dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, como um protocolo de comunicação sem fio, e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou com fio, como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode fazer parte de uma rede baseada em pacotes, como uma rede de área local, uma rede de área ampla ou uma rede global como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base ou qualquer outro equipamento que pode ser útil para facilitar a comunicação do dispositivo de origem 12 para o dispositivo de destino 14.
[0040] Em alguns exemplos, os dados codificados podem ser enviados da interface de saída 22 para um dispositivo de armazenamento. Da mesma forma, os dados codificados podem ser acessados a partir do dispositivo de armazenamento pela interface de entrada. O dispositivo de armazenamento pode incluir qualquer uma de uma variedade de meios de armazenamento de dados distribuídos ou acessados localmente, como um disco rígido, discos Blu-ray, discos de vídeo digital (DVD)s, memórias somente leitura de disco compacto (CD- ROMs), memória flash, memória volátil ou não volátil, ou qualquer outro meio de armazenamento digital adequado para armazenar dados de vídeo codificados. Em outro exemplo, o dispositivo de armazenamento pode corresponder a um servidor de arquivos ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo de origem 12. O dispositivo de destino 14 pode acessar dados de vídeo armazenados a partir do dispositivo de armazenamento através de streaming ou download. O servidor de arquivos pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 14. Os servidores de arquivos de exemplo incluem um servidor de rede (por exemplo, para um website), um servidor de protocolo de transferência de arquivos (FTP), dispositivos de armazenamento conectados à rede (NAS), ou uma unidade de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão com a Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, linha de assinante digital (DSL), modem a cabo, etc.), ou uma combinação de ambos que é adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados de vídeo codificados do dispositivo de armazenamento pode ser uma transmissão de streaming, uma transmissão de download, ou uma combinação das mesmas.
[0041] As técnicas desta divulgação não são necessariamente limitadas a aplicativos ou configurações sem fio. As técnicas podem ser aplicadas à codificação de vídeo no suporte de qualquer uma de uma variedade de aplicações multimídia, como difusões de televisão pelo ar, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de streaming de vídeo da Internet, como streaming adaptativo dinâmico sobre HTTP (DASH), vídeo digital que é codificado em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados, ou outras aplicações. Em alguns exemplos, o sistema de codificação 10 pode ser configurado para suportar transmissão de vídeo unilateral ou bidirecional para suportar aplicações como streaming de vídeo, reprodução de vídeo, difusão de vídeo e / ou telefonia de vídeo.
[0042] No exemplo da FIG. 1A, o dispositivo de origem 12 inclui a origem de vídeo 18, o codificador de vídeo 20 e a interface de saída 22. O dispositivo de destino 14 inclui interface de entrada 28, decodificador de vídeo 30 e dispositivo de exibição 32. De acordo com esta divulgação, o codificador de vídeo 200 do dispositivo de origem 12 e / ou o decodificador de vídeo 300 do dispositivo de destino 14 podem ser configurados para aplicar as técnicas de predição bidirecional. Em outros exemplos, um dispositivo de origem e um dispositivo de destino podem incluir outros componentes ou arranjos. Por exemplo, o dispositivo de origem 12 pode receber dados de vídeo de uma origem de vídeo externa, como uma câmera externa. Da mesma forma, o dispositivo de destino 14 pode interagir com um dispositivo de exibição externo, em vez de incluir um dispositivo de exibição integrado.
[0043] O sistema de codificação ilustrado 10 da FIG. 1A é apenas um exemplo. Técnicas para predição bidirecional podem ser realizadas por qualquer dispositivo de codificação e / ou decodificação de vídeo digital. Embora as técnicas desta divulgação geralmente sejam realizadas por um dispositivo de codificação de vídeo, as técnicas também podem ser realizadas por um codificador / decodificador de vídeo,
normalmente referido como um "CODEC". Além disso, as técnicas desta divulgação também podem ser realizadas por um pré- processador de vídeo. O codificador de vídeo e / ou o decodificador pode ser uma unidade de processamento gráfico (GPU) ou um dispositivo semelhante.
[0044] O dispositivo de origem 12 e o dispositivo de destino 14 são meramente exemplos de tais dispositivos de codificação em que o dispositivo de origem 12 gera dados de vídeo codificados para transmissão para o dispositivo de destino 14. Em alguns exemplos, o dispositivo de origem 12 e o dispositivo de destino 14 podem operar de maneira substancialmente simétrica, de modo que cada um dos dispositivos de origem e destino 12, 14 inclua codificação de vídeo e componentes de decodificação. Portanto, o sistema de codificação 10 pode suportar transmissão de vídeo unilateral ou bidirecional entre dispositivos de vídeo 12, 14, por exemplo, para streaming de vídeo, reprodução de vídeo, difusão de vídeo, ou telefonia de vídeo.
[0045] A origem de vídeo 18 do dispositivo de origem 12 pode incluir um dispositivo de captura de vídeo, como uma câmera de vídeo, um arquivo de vídeo contendo vídeo capturado anteriormente e / ou uma interface de alimentação de vídeo para receber vídeo de um provedor de conteúdo de vídeo. Como outra alternativa, a origem de vídeo 18 pode gerar dados baseados em gráficos de computador como o vídeo de origem, ou uma combinação de vídeo ao vivo, vídeo arquivado, e vídeo gerado por computador.
[0046] Em alguns casos, quando a origem de vídeo 18 é uma câmera de vídeo, o dispositivo de origem 12 e o dispositivo de destino 14 podem formar os chamados telefones com câmera ou telefones com vídeo. Conforme mencionado acima, no entanto, as técnicas descritas nesta divulgação podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas a aplicações sem fio e / ou com fio. Em cada caso, o vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. A informação de vídeo codificada pode, então, ser emitida pela interface de saída 22 em um meio legível por computador 16.
[0047] O meio legível por computador 16 pode incluir mídia transitória, como uma difusão sem fio ou transmissão de rede com fio, ou meio de armazenamento (isto é, meio de armazenamento não transitório), como um disco rígido, unidade flash, disco compacto, disco de vídeo digital, disco Blu-ray, ou outro meio legível por computador. Em alguns exemplos, um servidor de rede (não mostrado) pode receber dados de vídeo codificados do dispositivo de origem 12 e fornecer os dados de vídeo codificados ao dispositivo de destino 14, por exemplo, através de transmissão de rede. Da mesma forma, um dispositivo de computação de uma instalação de produção média, como uma instalação de estampagem de disco, pode receber dados de vídeo codificados do dispositivo de origem 12 e produzir um disco contendo os dados de vídeo codificados. Portanto, o meio legível por computador 16 pode ser entendido como incluindo um ou mais meios legíveis por computador de várias formas, em vários exemplos.
[0048] A interface de entrada 28 do dispositivo de destino 14 recebe informações do meio legível por computador
16. As informações do meio legível por computador 16 podem incluir informações de sintaxe definidas pelo codificador de vídeo 20, as quais também são usadas pelo decodificador de vídeo 30, que inclui elementos de sintaxe que descrevem características e / ou processamento de blocos e outras unidades codificadas, por exemplo, grupo de imagens (GOPs). O dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário e pode compreender qualquer um de uma variedade de dispositivos de exibição, como um tubo de raios catódicos (CRT), uma tela de exibição de cristal líquido (LCD), uma tela de exibição de plasma, um diodo orgânico emissor de luz (OLED), ou outro tipo de dispositivo de exibição.
[0049] O codificador de vídeo 200 e o decodificador de vídeo 300 podem operar de acordo com um padrão de codificação de vídeo, como o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento, e pode estar em conformidade com o Modelo de Teste HEVC (HM). Alternativamente, o codificador de vídeo 200 e o decodificador de vídeo 300 podem operar de acordo com outros padrões proprietários ou da indústria, como o padrão H.264 do Setor de Padronização de Telecomunicações da União Internacional de Telecomunicações (ITU-T), alternativamente referido como Grupo de Especialistas em Imagem em Movimento (MPEG) - 4, Parte 10, Codificação de Vídeo Avançada (AVC), H.265 / HEVC ou extensões de tais padrões. As técnicas desta divulgação, no entanto, não estão limitadas a qualquer padrão de codificação particular. Outros exemplos de padrões de codificação de vídeo incluem MPEG-2 e ITU-T H.263. Embora não mostrado na FIG. 1A, em alguns aspectos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem, cada um, ser integrados com um codificador e decodificador de áudio, e podem incluir unidades de multiplexador-demultiplexador
(MUX-DEMUX) apropriadas, ou outro hardware e software, para operar a codificação de áudio e vídeo em um fluxo de dados comum ou fluxos de dados separados. Se aplicável, as unidades MUX-DEMUX podem estar em conformidade com o protocolo de multiplexador ITU H.223, ou outros protocolos, como o protocolo de datagrama de usuário (UDP).
[0050] O codificador de vídeo 200 e o decodificador de vídeo 300, cada um, podem ser implementados como qualquer um de uma variedade de circuitos codificadores adequados, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), matrizes de portas programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware, ou qualquer combinação dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio legível por computador não transitório adequado e executar as instruções em hardware usando um ou mais processadores para realizar as técnicas desta divulgação. Cada um dos codificadores de vídeo 200 e decodificadores de vídeo 300 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador / decodificador combinado (CODEC) em um respectivo dispositivo. Um dispositivo incluindo codificador de vídeo 200 e / ou decodificador de vídeo 300 pode compreender um circuito integrado, um microprocessador e / ou um dispositivo de comunicação sem fio, como um telefone celular.
[0051] FIG. 1B é um diagrama de blocos esquemático que ilustra um sistema de codificação de vídeo de exemplo 40 incluindo o codificador 200 da FIG. 2 e / ou decodificador
300 da FIG. 3 de acordo com uma modalidade exemplar. O sistema 40 pode implementar técnicas da presente divulgação, por exemplo, a estimativa de mesclagem na interpredição. Na implementação ilustrada, o sistema de codificação de vídeo 40 pode incluir dispositivo (s) de imagem 41, codificador de vídeo 20, decodificador de vídeo 300 (e / ou um codificador de vídeo implementado através de circuitos lógicos 47 da (s) unidade (s) de processamento 46), uma antena 42, um ou mais processador (es) 43, um ou mais armazenamentos de memória 44 e / ou um dispositivo de exibição 45.
[0052] Conforme ilustrado, dispositivo (s) de imagem 41, antena 42, unidade (s) de processamento 46, circuitos lógicos 47, codificador de vídeo 20, decodificador de vídeo 30, processador (es) 43, armazenamento (s) de memória 44 e / ou dispositivo de exibição 45 podem ser capazes de se comunicarem entre si. Conforme discutido, embora ilustrado com o codificador de vídeo 20 e o decodificador de vídeo 30, o sistema de codificação de vídeo 40 pode incluir apenas o codificador de vídeo 20 ou apenas o decodificador de vídeo 30 em vários cenários práticos.
[0053] Como mostrado, em alguns exemplos, o sistema de codificação de vídeo 40 pode incluir a antena 42. A antena 42 pode ser configurada para transmitir ou receber um fluxo de bits codificado de dados de vídeo, por exemplo. Além disso, em alguns exemplos, o sistema de codificação de vídeo 40 pode incluir o dispositivo de exibição 45. O dispositivo de exibição 45 pode ser configurado para apresentar dados de vídeo. Como mostrado, em alguns exemplos, os circuitos lógicos 47 podem ser implementados através de unidade (s) de processamento 46. A (s) unidade (s) de processamento 46 podem incluir lógica de circuito integrado de aplicação específica (ASIC), processador (es) gráfico (s), processador (es) de uso geral, ou semelhantes. O sistema de codificação de vídeo 40 também pode incluir processador (es) 43 opcional (is), que pode (m) incluir lógica de circuito integrado de aplicação específica (ASIC), processador (es) gráfico (s), processador (es) de uso geral, ou semelhantes. Em alguns exemplos, os circuitos lógicos 54 podem ser implementados através de hardware, hardware dedicado de codificação de vídeo, ou semelhantes, e processador (es) 43 pode (m) implementar software de uso geral, sistemas operacionais, ou semelhantes. Além disso, os armazenamentos de memória 44 podem ser qualquer tipo de memória, como memória volátil (por exemplo, Memória de Acesso Aleatório Estática (SRAM), Memória de Acesso Aleatório Dinâmica (DRAM), etc.) ou memória não volátil (por exemplo, memória flash, etc.) e assim por diante. Em um exemplo não limitativo, o (s) armazenamento (s) de memória 44 podem ser implementados pela memória em cache. Em alguns exemplos, os circuitos lógicos 47 podem acessar armazenamento (s) de memória 44 (para implementação de um armazenamento temporário de imagem, por exemplo). Em outros exemplos, os circuitos lógicos 47 e / ou unidade (s) de processamento 46 podem incluir armazenamentos de memória (por exemplo, cache ou semelhantes) para a implementação de um armazenamento temporário de imagem ou semelhantes.
[0054] Em alguns exemplos, o codificador de vídeo 200 implementado através de circuitos lógicos pode incluir um armazenamento temporário de imagem (por exemplo, através de unidade (s) de processamento 46 ou armazenamento (s) de memória 44) e uma unidade de processamento gráfico (por exemplo, através de unidade (s) de processamento 46). A unidade de processamento gráfico pode ser acoplada comunicativamente ao armazenamento temporário de imagem. A unidade de processamento gráfico pode incluir codificador de vídeo 200 implementado através de circuitos lógicos 47 para incorporar os vários módulos, conforme discutido em relação à FIG. 2 e / ou qualquer outro sistema codificador ou subsistema descrito neste documento. Os circuitos lógicos podem ser configurados para realizar as várias operações conforme discutido neste documento.
[0055] O decodificador de vídeo 300 pode ser implementado de uma maneira semelhante à implementada através dos circuitos lógicos 47 para incorporar os vários módulos, conforme discutido em relação ao decodificador 300 da FIG. 3 e / ou qualquer outro sistema ou subsistema decodificador descrito neste documento. Em alguns exemplos, o decodificador de vídeo 300 pode ser implementado através de circuitos lógicos que podem incluir um armazenamento temporário de imagem (por exemplo, através de unidade (s) de processamento 46 ou armazenamento (s) de memória 44) e uma unidade de processamento gráfico (por exemplo, através de unidade (s) de processamento 46). A unidade de processamento gráfico pode ser acoplada comunicativamente ao armazenamento temporário de imagem. A unidade de processamento gráfico pode incluir decodificador de vídeo 300 conforme implementado através de circuitos lógicos 47 para incorporar os vários módulos, conforme discutido em relação à FIG. 3 e / ou qualquer outro sistema ou subsistema decodificador descrito neste documento.
[0056] Em alguns exemplos, a antena 42 do sistema de codificação de vídeo 40 pode ser configurada para receber um fluxo de bits codificado de dados de vídeo. Conforme discutido, o fluxo de bits codificado pode incluir dados, indicadores, valores de índice, dados de seleção de modo, ou semelhantes associados à codificação de um quadro de vídeo, como aqui discutido, tais como dados associados com a partição de codificação (por exemplo, coeficientes de transformada ou coeficientes de transformada quantizados, indicadores opcionais (conforme discutido) e / ou dados que definem a partição de codificação). O sistema de codificação de vídeo 40 também pode incluir decodificador de vídeo 300 acoplado à antena 42 e configurado para decodificar o fluxo de bits codificado. O dispositivo de exibição 45 configurado para apresentar quadros de vídeo.
[0057] FIG. 2 é um diagrama de blocos que ilustra um exemplo de codificador de vídeo 200 que pode implementar as técnicas do presente pedido. O codificador de vídeo 200 pode realizar intracodificação e intercodificação de blocos de vídeo dentro de fatias de vídeo. A intracodificação depende da predição espacial para reduzir ou remover a redundância espacial no vídeo em um determinado quadro de vídeo ou imagem. A intercodificação depende da predição temporal para reduzir ou remover a redundância temporal no vídeo em quadros ou imagens adjacentes de uma sequência de vídeo. Modo Intra (modo I) pode se referir a qualquer um dos vários modos de codificação com base espacial. Modos Inter, como predição unidirecional (modo P) ou predição bidirecional (modo B), podem se referir a qualquer um dos vários modos de codificação com base temporal.
[0058] FIG. 2 mostra um diagrama de blocos esquemático
/ conceitual de um codificador de vídeo de exemplo 200 que é configurado para implementar as técnicas da presente divulgação. No exemplo da Fig. 2, o codificador de vídeo 200 compreende uma unidade de cálculo residual 204, uma unidade de processamento de transformada 206, uma unidade de quantização 208, uma unidade de quantização inversa 210, e unidade de processamento de transformada inversa 212, uma unidade de reconstrução 214, um armazenamento temporário 216, uma unidade de filtro de repetição 220, um armazenamento temporário de imagem decodificada (DPB) 230, uma unidade de processamento de predição 260 e uma unidade de codificação de entropia 270. A unidade de processamento de predição 260 pode incluir uma interestimativa 242, uma unidade de interpredição 244, uma intraestimativa 252, uma unidade de intrapredição 254 e uma unidade de seleção de modo 262. A unidade de interpredição 244 pode incluir ainda uma unidade de compensação de movimento (não mostrada). O codificador de vídeo 200, conforme mostrado na Fig. 2, também pode ser referido como um codificador de vídeo híbrido ou um codificador de vídeo de acordo com um codec de vídeo híbrido.
[0059] Por exemplo, a unidade de cálculo residual 204, a unidade de processamento de transformada 206, a unidade de quantização 208, a unidade de processamento de predição 260 e a unidade de codificação de entropia 270 formam um caminho de sinal direto do codificador 200, enquanto, por exemplo, a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o armazenamento temporário 216, o filtro de repetição 220, o armazenamento temporário de imagem decodificada (DPB) 230, unidade de processamento de predição
260 formam um caminho de sinal reverso do codificador, em que o caminho de sinal reverso do codificador corresponde ao caminho do sinal do decodificador (ver decodificador 300 na Fig. 3).
[0060] O codificador 200 é configurado para receber, por exemplo, pela entrada 202, uma imagem 201 ou um bloco 203 da imagem 201, por exemplo, imagem de uma sequência de imagens formando um vídeo ou sequência de vídeo. O bloco de imagem 203 também pode ser referido como bloco de imagem atual ou bloco de imagem a ser codificado, e a imagem 201 como imagem atual ou imagem a ser codificada (em particular na codificação de vídeo para distinguir a imagem atual de outras imagens, por exemplo, previamente codificada e / ou imagens decodificadas da mesma sequência de vídeo, ou seja, a sequência de vídeo que também compreende a imagem atual).
PARTICIONAMENTO
[0061] As modalidades do codificador 200 podem compreender uma unidade de particionamento (não representada na FIG. 2) configurada para particionar a imagem 201 em uma pluralidade de blocos, por exemplo, blocos como o bloco 203, tipicamente em uma pluralidade de blocos não sobrepostos. A unidade de particionamento pode ser configurada para usar o mesmo tamanho de bloco para todas as imagens de uma sequência de vídeo e a grade correspondente definindo o tamanho do bloco, ou para alterar o tamanho do bloco entre imagens ou subconjuntos ou grupos de imagens, e particionar cada imagem nos blocos correspondentes.
[0062] Em HEVC e outras especificações de codificação de vídeo, para gerar uma representação codificada de uma imagem, um conjunto de unidades de árvore de codificação (CTUs) pode ser gerado. Cada uma das CTUs pode compreender um bloco de árvore de codificação de amostras de luma, dois blocos de árvore de codificação correspondentes de amostras de croma e estruturas de sintaxe usadas para codificar as amostras dos blocos de árvore de codificação. Em imagens monocromáticas ou imagens com três planos de cores separados, uma CTU pode compreender um único bloco de árvore de codificação e estruturas de sintaxe usadas para codificar as amostras do bloco de árvore de codificação. Um bloco de árvore de codificação pode ser um bloco N × N de amostras. Uma CTU também pode ser referida como um "bloco de árvore" ou uma "maior unidade de codificação" (LCU). As CTUs de HEVC podem ser amplamente análogas aos macroblocos de outros padrões, como H.264 / AVC. No entanto, uma CTU não está necessariamente limitada a um tamanho específico e pode incluir uma ou mais unidades de codificação (CUs). Uma fatia pode incluir um número inteiro de CTUs ordenadas consecutivamente em uma ordem de varredura raster.
[0063] No HEVC, uma CTU é dividida em CUs usando uma estrutura de quad-tree denotada como árvore de codificação para se adaptar a várias características locais. A decisão de codificar uma área de imagem usando predição interimagem (temporal) ou intra-imagem (espacial) é feita no nível de CU. Uma CU pode compreender um bloco de codificação de amostras de luma e dois blocos de codificação correspondentes de amostras de croma de uma imagem que tem uma matriz de amostra de luma, uma matriz de amostra Cb e uma matriz de amostra Cr e estruturas de sintaxe usadas para codificar as amostras da codificação blocos. Em imagens monocromáticas ou imagens com três planos de cores separados, uma CU pode compreender um único bloco de codificação e estruturas de sintaxe usadas para codificar as amostras do bloco de codificação. Um bloco de codificação é um bloco N × N de amostras. Em alguns exemplos, uma CU pode ter o mesmo tamanho de uma CTU. Cada CU é codificada com um modo de codificação, que pode ser, por exemplo, um modo de intracodificação ou um modo de intercodificação. Outros modos de codificação também são possíveis. O codificador 200 recebe dados de vídeo. O codificador 200 pode codificar cada CTU em uma fatia de uma imagem dos dados de vídeo. Como parte da codificação de uma CTU, a unidade de processamento de predição 260 ou outra unidade de processamento (incluindo, mas não se limitando à unidade do codificador 200 mostrada na figura 2) do codificador 200 pode realizar particionamento para dividir os CTBs da CTU em blocos progressivamente menores 203. Os blocos menores podem ser blocos de codificação de CUs.
[0064] Os dados de sintaxe em um fluxo de bits também podem definir um tamanho para a CTU. Uma fatia inclui várias CTUs consecutivas na ordem de codificação. Um quadro de vídeo ou imagem ou fotografia pode ser particionado em uma ou mais fatias. Conforme mencionado acima, cada bloco de árvore pode ser dividido em unidades de codificação (CUs) de acordo com uma quad-tree. Em geral, uma estrutura de dados de quad-tree inclui um nó por CU, com um nó raiz correspondente ao bloco de árvores (por exemplo, CTU). Se uma CU é dividida em quatro sub-CUs, o nó correspondente à CU inclui quatro nós filho, cada um dos quais corresponde a uma das sub-CUs. A pluralidade de nós em uma estrutura de quad-tree inclui nós folha e nós não folha. Os nós folha não têm nós filhos na estrutura de árvore (ou seja, os nós folha não são mais divididos). Os nós não folha incluem um nó raiz da estrutura de árvore. Para cada respectivo nó não raiz da pluralidade de nós, o respectivo nó não raiz corresponde a uma sub-CU de uma CU correspondente a um nó pai na estrutura de árvore do respectivo nó não raiz. Cada nó não folha respectivo tem um ou mais nós filhos na estrutura de árvore.
[0065] Cada nó da estrutura de dados de quad-tree pode fornecer dados de sintaxe para a CU correspondente. Por exemplo, um nó na quad-tree pode incluir um indicador de divisão, indicando se a CU correspondente ao nó está dividida em sub-CUs. Os elementos de sintaxe para uma CU podem ser definidos recursivamente, e podem depender de se a CU é dividida em sub-CUs. Se uma CU não for mais dividida, ela será denominada como CU folha. Se um bloco de CU for dividido ainda mais, ele pode ser geralmente referido como uma CU não folha. Cada nível de particionamento é uma quad-tree dividida em quatro sub-CUs. A CU preta é um exemplo de nó-folha (ou seja, um bloco que não é mais dividido).
[0066] Uma CU tem uma finalidade semelhante a um macrobloco do padrão H.264, exceto que uma CU não tem uma distinção de tamanho. Por exemplo, um bloco de árvore pode ser dividido em quatro nós filhos (também referidos como sub-CUs) e cada nó filho pode, por sua vez, ser um nó pai e ser dividido em outros quatro nós filhos. Um nó filho, final, não dividido, denominado nó folha da quadtree, compreende um nó de codificação, também denominado como CU folha. Os dados de sintaxe associados a um fluxo de bits codificado podem definir um número máximo de vezes que um bloco de árvore pode ser dividido, referido como uma profundidade CU máxima, e também pode definir um tamanho mínimo dos nós de codificação. Consequentemente, um fluxo de bits também pode definir uma menor unidade de codificação (SCU). O termo "bloco" é usado para se referir a qualquer um de uma CU, PU ou TU, no contexto de HEVC, ou estruturas de dados semelhantes no contexto de outros padrões (por exemplo, macroblocos e sub-blocos dos mesmos em H.264 / AVC).
[0067] Em HEVC, cada CU pode ser dividida em uma, duas ou quatro PUs de acordo com o tipo de divisão de PU. Dentro de uma PU, o mesmo processo de predição é aplicado e as informações relevantes são transmitidas ao decodificador com base na PU. Depois de obter o bloco residual aplicando o processo de predição com base no tipo de divisão de PU, uma CU pode ser particionada em unidades de transformada (TUs) de acordo com outra estrutura de quad-tree semelhante à árvore de codificação para a CU. Um dos principais recursos da estrutura HEVC é que ela tem múltiplos conceitos de partição, incluindo CU, PU e TU. As PUs podem ser particionadas para terem formato não quadrado. Os dados de sintaxe associados a uma CU também podem descrever, por exemplo, o particionamento da CU em uma ou mais PUs. Uma TU pode ser quadrada ou não quadrada (por exemplo, retangular) em forma, os dados de sintaxe associados a uma CU podem descrever, por exemplo, o particionamento da CU em uma ou mais TUs de acordo com uma quad-tree. Os modos de particionamento podem diferir entre se a CU é codificada no modo de salto ou direto, no modo de intrapredição codificado ou no modo de interpredição codificado.
[0068] Enquanto VVC (Versatile Video Coding, Codificação de Vídeo Versátil) remove a separação dos conceitos de PU e TU, e oferece mais flexibilidade para formatos de partição
CU. Um tamanho da CU corresponde a um tamanho do nó de codificação e pode ter forma quadrada ou não quadrada (por exemplo, retangular). O tamanho da CU pode variar de 4 × 4 pixels (ou 8 × 8 pixels) até o tamanho do bloco de árvore com um máximo de 128 × 128 pixels ou mais (por exemplo, 256 × 256 pixels).
[0069] Após o codificador 200 gerar um bloco preditivo (por exemplo, bloco preditivo luma, Cb e Cr) para CU, o codificador 200 pode gerar um bloco residual para a CU. Por exemplo, o codificador 100 pode gerar um bloco residual luma para a CU. Cada amostra no bloco residual luma da CU indica uma diferença entre uma amostra luma no bloco preditivo luma da CU e uma amostra correspondente no bloco de codificação luma original da CU. Além disso, o codificador 200 pode gerar um bloco residual Cb para a CU. Cada amostra no bloco residual Cb de uma CU pode indicar uma diferença entre uma amostra Cb no bloco Cb preditivo da CU e uma amostra correspondente no bloco de codificação Cb original da CU. O codificador 200 também pode gerar um bloco residual de Cr para a CU. Cada amostra no bloco residual de Cr da CU pode indicar uma diferença entre uma amostra Cr no bloco Cr preditivo da CU e uma amostra correspondente no bloco de codificação de Cr original da CU.
[0070] Em alguns exemplos, o codificador 200 salta a aplicação das transformadas ao bloco de transformada. Em tais exemplos, o codificador 200 pode tratar os valores residuais da amostra da mesma maneira que os coeficientes de transformada. Assim, em exemplos em que o codificador 200 salta a aplicação das transformadas, a seguinte discussão de coeficientes de transformada e blocos de coeficiente pode ser aplicável a blocos de transformada de amostras residuais.
[0071] Depois de gerar um bloco de coeficiente (por exemplo, um bloco de coeficiente luma, um bloco de coeficiente Cb, ou um bloco de coeficiente Cr), o codificador 200 pode quantizar o bloco de coeficiente para possivelmente reduzir a quantidade de dados usados para representar o bloco de coeficiente, potencialmente fornecendo compactação adicional. A quantização geralmente se refere a um processo no qual uma faixa de valores é compactada em um único valor. Após o codificador 200 quantificar um bloco de coeficiente, o codificador 200 pode codificar por entropia elementos de sintaxe indicando os coeficientes de transformada quantizados. Por exemplo, o codificador 200 pode realizar Codificação Aritmética Binária Adaptável ao Contexto (CABAC) ou outras técnicas de codificação de entropia nos elementos de sintaxe indicando os coeficientes de transformada quantizados.
[0072] O codificador 200 pode emitir um fluxo de bits de dados de imagem codificados 271 que inclui uma sequência de bits que forma uma representação de imagens codificadas e dados associados. Assim, o fluxo de bits compreende uma representação codificada de dados de vídeo.
[0073] Em J. An et al., "Block particioning structure for next generation video coding", União de Telecomunicação Internacional, COM16-C966, setembro de 2015 (doravante, "proposta VCEG COM16-C966"), técnicas de particionamento de árvore binária de quad-tree (QTBT) foram propostas para o futuro padrão de codificação de vídeo além de HEVC. Simulações têm mostrado que a estrutura QTBT proposta é mais eficiente do que a estrutura quad-tree usada no HEVC. Em
HEVC, a interpredição para pequenos blocos é restrita para reduzir o acesso à memória de compensação de movimento, de modo que a bipredição não seja suportada para blocos 4 × 8 e 8 × 4, e a interpredição não seja suportada para blocos 4 × 4. No QTBT do JEM, essas restrições são removidas.
[0074] No QTBT, uma CU pode ter uma forma quadrada ou retangular. Por exemplo, uma unidade de árvore de codificação (CTU) é primeiro particionada por uma estrutura quadtree. Os nós folha de quadtree podem ser particionados posteriormente por uma estrutura de árvore binária. Existem dois tipos de divisão, divisão horizontal simétrica e divisão vertical simétrica, na divisão da árvore binária. Em cada caso, um nó é dividido dividindo-se o nó ao meio, horizontalmente ou verticalmente. Os nós de folha da árvore binárias são chamados de unidades de codificação (CUs), e essa segmentação é usada para predição e processamento de transformada sem qualquer particionamento adicional. Isso significa que CU, PU e TU têm o mesmo tamanho de bloco na estrutura do bloco de codificação QTBT. Uma CU às vezes consiste em blocos de codificação (CBs) de componentes de cores diferentes, por exemplo, uma CU contém um CB de luma e dois CBs de croma no caso de fatias P e B do formato de croma 4:2:0 e às vezes consiste em um CB de um único componente, por exemplo, uma CU contém apenas um CB de luma ou apenas dois CB de croma no caso de fatias I.
[0075] Os parâmetros a seguir são definidos para o esquema de particionamento QTBT.
[0076] – Tamanho CTU: o tamanho do nó raiz de uma quadtree, o mesmo conceito que em HEVC.
[0077] – MinQTSize: o tamanho mínimo permitido do nó folha de quadtree.
[0078] – MaxBTSize: o tamanho máximo permitido do nó raiz da árvore binária.
[0079] – MaxBTDepth: a profundidade máxima permitida da árvore binária.
[0080] – MinBTSize: o tamanho mínimo permitido do nó folha da árvore binária.
[0081] Em um exemplo da estrutura de particionamento QTBT, o tamanho do CTU é definido como 128 × 128 amostras de luma com dois blocos correspondentes de 64 × 64 amostras de croma, o MinQTSize é definido como 16 × 16, o MaxBTSize é definido como 64 × 64, o MinBTSize (para largura e altura) é definido como 4 × 4, e MaxBTDepth é definido como 4. O particionamento de quadtree é aplicado à CTU primeiro para gerar nós folha de quadtree. Os nós folha de quadtree podem ter um tamanho de 16 × 16 (ou seja, o MinQTSize) a 128 × 128 (ou seja, o tamanho do CTU). Quando o nó de quadtree tem tamanho igual a MinQTSize, nenhum outro quadtree é considerado. Se o nó folha de quadtree for 128 × 128, ele não será mais dividido pela árvore binária, pois o tamanho excede o MaxBTSize (ou seja, 64 × 64). Caso contrário, o nó folha de quadtree poderia ser particionado ainda mais pela árvore binária. Portanto, o nó folha de quadtree também é o nó raiz da árvore binária e tem a profundidade da árvore binária como 0. Quando a profundidade da árvore binária atinge MaxBTDepth (ou seja, 4), nenhuma divisão adicional é considerada. Quando o nó da árvore binária tem largura igual a MinBTSize (ou seja, 4), nenhuma divisão horizontal adicional é considerada. Da mesma forma, quando o nó da árvore binária tem altura igual a MinBTSize, nenhuma divisão vertical adicional é considerada. Os nós folha da árvore binária são posteriormente processados por predição e processamento de transformada sem qualquer particionamento adicional. No JEM, o tamanho máximo da CTU é de 256 × 256 amostras luma. Os nós folha da árvore binária (CUs) podem ser processados posteriormente (por exemplo, realizando um processo de predição e um processo de transformada) sem qualquer particionamento adicional.
[0082] Além disso, o esquema QTBT suporta a capacidade do luma e do croma de ter uma estrutura QTBT separada. Atualmente, para fatias P e B, os CTBs luma e croma em uma CTU podem compartilhar a mesma estrutura QTBT. No entanto, para fatias I, o luma CTB é particionado em CUs por uma estrutura QTBT, e os croma CTBs podem ser particionados em CUs croma por outra estrutura QTBT. Isso significa que uma CU em uma fatia I consiste em um bloco de codificação do componente luma ou blocos de codificação de dois componentes de croma, e uma CU em uma fatia P ou B consiste em blocos de codificação de todos os três componentes de cor.
[0083] O codificador 200 aplica um processo de otimização de distorção de taxa (RDO) para a estrutura QTBT para determinar o particionamento de bloco.
[0084] Além disso, uma estrutura de particionamento de bloco chamada árvore multitipo (MTT) é proposta na Publicação do Pedido de Patente dos EUA Nº. 20170208336 para substituir estruturas de CU baseadas em QT, BT e / ou QTBT. A estrutura de particionamento MTT ainda é uma estrutura de árvore recursiva. Na MTT, múltiplas estruturas de partição diferentes (por exemplo, três ou mais) são usadas. Por exemplo, de acordo com as técnicas de MTT, três ou mais estruturas de partição diferentes podem ser usadas para cada nó não folha respectivo de uma estrutura de árvore, em cada profundidade da estrutura de árvore. A profundidade de um nó em uma estrutura de árvore pode se referir ao comprimento do caminho (por exemplo, o número de divisões) do nó à raiz da estrutura de árvore. Uma estrutura de partição geralmente pode se referir a quantos blocos diferentes um bloco pode ser dividido. Uma estrutura de partição pode ser uma estrutura de particionamento de quad-tree que pode dividir um bloco em quatro blocos, uma estrutura de particionamento de árvore binária que pode dividir um bloco em dois blocos, ou uma estrutura de particionamento de árvore tripla que pode dividir um bloco em três blocos, além disso, estrutura de particionamento de árvore tripla que pode ser sem dividir o bloco pelo centro. Uma estrutura de partição pode ter múltiplos tipos de partição diferentes. Um tipo de partição pode definir adicionalmente como um bloco é dividido, incluindo particionamento simétrico ou assimétrico, particionamento uniforme ou não uniforme e / ou particionamento horizontal ou vertical.
[0085] No MTT, em cada profundidade da estrutura de árvore, o codificador 200 pode ser configurado para dividir ainda mais as subárvores usando um tipo de partição particular entre uma das três estruturas de particionamento. Por exemplo, o codificador 100 pode ser configurado para determinar um tipo de partição particular de QT, BT, árvore tripla (TT) e outras estruturas de particionamento. Em um exemplo, a estrutura de particionamento QT pode incluir tipos de particionamento de quad-tree quadrada ou quad-tree retangular. O codificador 200 pode particionar um bloco quadrado usando particionamento de quad-tree quadrada dividindo o bloco, no centro tanto horizontalmente quanto verticalmente, em quatro blocos quadrados de mesmo tamanho. Da mesma forma, o codificador 200 pode particionar um bloco retangular (por exemplo, não quadrado) usando partição de quad-tree retangular, dividindo o bloco retangular, no centro tanto horizontalmente quanto verticalmente, em quatro blocos retangulares de tamanhos iguais.
[0086] A estrutura de particionamento BT pode incluir pelo menos um de tipos de partição de árvore binária simétrica horizontal, árvore binária simétrica vertical, árvore binária não simétrica horizontal ou árvore binária não simétrica vertical. Para o tipo de partição de árvore binária simétrica horizontal, o codificador 200 pode ser configurado para dividir um bloco, no centro do bloco horizontalmente, em dois blocos simétricos do mesmo tamanho. Para o tipo de partição de árvore binária simétrica vertical, o codificador 200 pode ser configurado para dividir um bloco, no centro do bloco verticalmente, em dois blocos simétricos do mesmo tamanho. Para o tipo de partição de árvore binária não simétrica horizontal, o codificador 200 pode ser configurado para dividir um bloco, horizontalmente, em dois blocos de tamanhos diferentes. Por exemplo, um bloco pode ter 1/4 do tamanho do bloco pai e o outro bloco pode ter 3/4 do tamanho dos blocos pais, semelhante ao tipo de partição PART_2N × nU ou PART_2N × nD. Para o tipo de partição de árvore binária não simétrica vertical, o codificador 200 pode ser configurado para dividir um bloco, verticalmente, em dois blocos de tamanhos diferentes. Por exemplo, um bloco pode ter 1/4 do tamanho do bloco pai e o outro bloco pode ter 3/4 do tamanho dos blocos pais, semelhante ao tipo de partição PART_nL × 2N ou PART_nR × 2N. Em outros exemplos, um tipo de partição de árvore binária assimétrica pode dividir um bloco pai em frações de tamanhos diferentes. Por exemplo, um sub-bloco pode ser 3/8 do bloco pai e o outro sub-bloco pode ser 5/8 do bloco pai. Claro, esse tipo de partição pode ser vertical ou horizontal.
[0087] A estrutura de partição TT difere das estruturas QT ou BT, pois a estrutura de partição TT não divide um bloco no centro. A região central do bloco permanece junto no mesmo sub-bloco. Diferente de QT, que produz quatro blocos, ou árvore binária, que produz dois blocos, a divisão de acordo com uma estrutura de partição TT produz três blocos. Tipos de partição de exemplo de acordo com a estrutura de partição TT incluem tipos de partição simétrica (tanto horizontal quanto vertical), assim como tipos de partição assimétrica (tanto horizontal quanto vertical). Além disso, os tipos de partições simétricas de acordo com a estrutura de partição TT podem ser irregulares / não uniformes ou regulares / uniformes. Os tipos de partição assimétrica de acordo com a estrutura de partição TT são irregulares / não uniformes. Em um exemplo, uma estrutura de partição TT pode incluir pelo menos um dos seguintes tipos de partição: tipos de partição de árvore tripla simétrica horizontal regular / uniforme, árvore tripla simétrica vertical regular / uniforme, árvore tripla simétrica horizontal irregular / não uniforme, árvore tripla simétrica vertical irregular / não uniforme, árvore tripla assimétrica horizontal irregular / não uniforme, ou árvore tripla assimétrica vertical irregular / não uniforme.
[0088] Em geral, um tipo de partição de árvore tripla simétrica irregular / não uniforme é um tipo de partição que é simétrico em relação a uma linha central do bloco, mas onde pelo menos um dos três blocos resultantes não é do mesmo tamanho que os outros dois. Um exemplo preferido é quando os blocos laterais têm 1/4 do tamanho do bloco e o bloco central tem 1/2 do tamanho do bloco. Um tipo de partição de árvore tripla simétrica regular / uniforme é um tipo de partição simétrico em relação a uma linha central do bloco, e os blocos resultantes são todos do mesmo tamanho. Essa partição é possível se a altura ou largura do bloco, dependendo de uma divisão vertical ou horizontal, for um múltiplo de 3. Um tipo de partição de árvore tripla assimétrica irregular / não uniforme é um tipo de partição que não é simétrico em relação a uma linha central do bloco, e onde pelo menos um dos blocos resultantes não é do mesmo tamanho que os outros dois.
[0089] Nos exemplos onde um bloco (por exemplo, em um nó de sub-árvore) é dividido em um tipo de partição de árvore tripla não simétrica, o codificador 200 e / ou o decodificador 300 podem aplicar uma restrição de modo que duas das três partições tenham o mesmo tamanho. Tal restrição pode corresponder a uma limitação que o codificador 200 deve cumprir ao codificar dados de vídeo. Além disso, em alguns exemplos, o codificador 200 e o decodificador 300 podem aplicar uma restrição em que a soma da área de duas partições é igual à área da partição restante ao dividir de acordo com um tipo de partição de árvore tripla não simétrica.
[0090] Em alguns exemplos, o codificador 200 pode ser configurado para selecionar entre todos os tipos de partição acima mencionados para cada uma das estruturas de partição
QT, BT e TT. Em outros exemplos, o codificador 200 pode ser configurado para determinar apenas um tipo de partição de entre um subconjunto dos tipos de partição acima mencionados. Por exemplo, um subconjunto dos tipos de partição acima discutidos (ou outros tipos de partição) pode ser usado para certos tamanhos de bloco ou para certas profundidades de uma estrutura de quadtree. O subconjunto de tipos de partição suportados pode ser sinalizado no fluxo de bits para uso pelo decodificador 200 ou pode ser predefinido de modo que o codificador 200 e o decodificador 300 possam determinar os subconjuntos sem qualquer sinalização.
[0091] Em outros exemplos, o número de tipos de particionamento suportados pode ser fixado para todas as profundidades em todas as CTUs. Ou seja, o codificador 200 e o decodificador 300 podem ser pré-configurados para usar o mesmo número de tipos de particionamento para qualquer profundidade de uma CTU. Em outros exemplos, o número de tipos de particionamento suportados pode variar e pode ser dependente da profundidade, tipo de fatia ou outras informações codificadas anteriormente. Em um exemplo, na profundidade 0 ou profundidade 1 da estrutura de árvore, apenas a estrutura de partição QT é usada. Em profundidades maiores do que 1, cada uma das estruturas de partição QT, BT e TT pode ser usada.
[0092] Em alguns exemplos, o codificador 200 e / ou o decodificador 300 podem aplicar restrições pré-configuradas nos tipos de particionamento suportados, a fim de evitar o particionamento duplicado para uma determinada região de uma imagem de vídeo ou região de uma CTU. Em um exemplo, quando um bloco é dividido com tipo de partição não simétrica, o codificador 200 e / ou o decodificador 300 podem ser configurados para não dividir ainda mais o maior sub-bloco que é dividido do bloco atual. Por exemplo, quando um bloco quadrado é dividido de acordo com um tipo de partição não simétrica (semelhante ao tipo de partição PART_2N × nU), o maior sub-bloco entre todos os sub-blocos (semelhante ao maior sub-bloco de tipo de partição PART_2N × nU) é o nó folha observado e não pode ser mais dividido. No entanto, o sub-bloco menor (semelhante ao sub-bloco menor do tipo de partição PART_2N × nU) pode ser dividido posteriormente.
[0093] Como outro exemplo onde as restrições nos tipos de particionamento suportados podem ser aplicadas para evitar o particionamento duplicado para uma determinada região, quando um bloco é dividido com tipo de partição não simétrica, o maior sub-bloco que é dividido do bloco atual não pode ser dividido na mesma direção. Por exemplo, quando um bloco quadrado é dividido em tipo de partição não simétrica (semelhante ao tipo de partição PART_2N × nU), o codificador 200 e / ou o decodificador 300 podem ser configurados para não dividir o sub-bloco grande entre todos os sub-blocos (semelhante ao maior sub-bloco do tipo de partição PART_2N × nU) na direção horizontal.
[0094] Como outro exemplo em que restrições nos tipos de particionamento suportados podem ser aplicadas para evitar dificuldade em divisão adicional, o codificador 200 e / ou o decodificador 300 podem ser configurados para não dividir um bloco, seja horizontalmente ou verticalmente, quando a largura / altura de um bloco não é uma potência de 2 (por exemplo, quando a altura da largura não é 2, 4, 8, 16, etc.).
[0095] Os exemplos acima descrevem como o codificador
200 pode ser configurado para realizar o particionamento MTT. O decodificador 300 também pode então aplicar o mesmo particionamento MTT que foi realizado pelo codificador 200. Em alguns exemplos, como uma imagem de dados de vídeo foi particionada pelo codificador 200 pode ser determinado aplicando o mesmo conjunto de regras predefinidas no decodificador 300. No entanto, em muitas situações, o codificador 200 pode determinar uma estrutura de partição particular e tipo de partição para usar com base em critérios de distorção de taxa para a imagem particular de dados de vídeo sendo codificados. Como tal, para que o decodificador 300 determine o particionamento para uma imagem particular, o codificador 200 pode sinalizar elementos de sintaxe no fluxo de bits codificado que indicam como a imagem, e CTUs da imagem, devem ser particionados. O decodificador 200 pode analisar tais elementos de sintaxe e particionar a imagem e CTUs de acordo.
[0096] Em um exemplo, a unidade de processamento de predição 260 do codificador de vídeo 200 pode ser configurada para realizar qualquer combinação das técnicas de particionamento descritas acima, especialmente, para a estimativa de movimento, e os detalhes serão descritos posteriormente.
[0097] Como a imagem 201, o bloco 203 é ou pode ser considerado como uma matriz bidimensional ou matriz de amostras com valores de intensidade (valores de amostra), embora de dimensão menor do que a imagem 201. Em outras palavras, o bloco 203 pode compreender, por exemplo, uma matriz de amostra (por exemplo, uma matriz de luma no caso de uma imagem monocromática 201) ou três matrizes de amostra
(por exemplo, uma matriz de luma e duas matrizes de croma no caso de uma imagem colorida 201) ou qualquer outro número e / ou tipo de matrizes dependendo do formato de cor aplicado. O número de amostras na direção horizontal e vertical (ou eixo) do bloco 203 define o tamanho do bloco 203.
[0098] O codificador 200, como mostrado na FIG. 2 é configurado para codificar a imagem 201 bloco a bloco, por exemplo, a codificação e predição são realizadas por bloco
203.
CÁLCULO RESIDUAL
[0099] A unidade de cálculo residual 204 é configurada para calcular um bloco residual 205 com base no bloco de imagem 203 e um bloco de predição 265 (mais detalhes sobre o bloco de predição 265 são fornecidos posteriormente), por exemplo, subtraindo valores de amostra do bloco de predição 265 dos valores de amostra do bloco de imagem 203, amostra por amostra (pixel por pixel) para obter o bloco residual 205 no domínio de amostra.
TRANSFORMADA
[0100] A unidade de processamento de transformada 206 é configurada para aplicar uma transformada, por exemplo, uma transformada discreta de cosseno (DCT) ou transformada discreta de seno (DST), nos valores de amostra do bloco residual 205 para obter coeficientes de transformada 207 em um domínio de transformada. Os coeficientes de transformada 207 também podem ser referidos como coeficientes residuais de transformada e representam o bloco residual 205 no domínio de transformada.
[0101] A unidade de processamento de transformada 206 pode ser configurada para aplicar aproximações inteiras de
DCT / DST, como as transformadas especificadas para HEVC / H.265. Em comparação com uma transformada DCT ortogonal, essas aproximações inteiras são normalmente escalonadas por um determinado fator. A fim de preservar a norma do bloco residual que é processado pelas transformadas direta e inversa, fatores de escalonamento adicionais são aplicados como parte do processo de transformada. Os fatores de escalonamento são normalmente escolhidos com base em certas restrições, como fatores de escalonamento sendo uma potência de dois para operação de deslocamento, profundidade de bits dos coeficientes de transformada, compensação entre precisão e custos de implementação, etc. Fatores de escalonamento específicos são, por exemplo, especificados para a transformada inversa, por exemplo, pela unidade de processamento de transformada inversa 212, em um decodificador 300 (e a transformada inversa correspondente, por exemplo, pela unidade de processamento de transformada inversa 212 em um codificador 200 e fatores de escalonamento correspondentes para a transformada direta, por exemplo, pela unidade de processamento de transformada 206, em um codificador 200 podem ser especificados em conformidade.
QUANTIZAÇÃO
[0102] A unidade de quantização 208 é configurada para quantizar os coeficientes de transformada 207 para obter coeficientes de transformada quantizados 209, por exemplo, aplicando quantização escalar ou quantização vetorial. Os coeficientes de transformada quantizados 209 também podem ser referidos como coeficientes residuais quantizados 209. O processo de quantização pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes de transformada 207. Por exemplo, um coeficiente de transformada de n bits pode ser arredondado para baixo para um coeficiente de transformada de m bits durante a quantização, onde n é maior do que m.
O grau de quantização pode ser modificado ajustando um parâmetro de quantização (QP). Por exemplo, para a quantização escalar, diferentes escalonamentos podem ser aplicados para alcançar uma quantização mais fina ou mais grosseira.
Tamanhos de etapa de quantização menores correspondem a quantização mais fina, enquanto tamanhos de etapa de quantização maiores correspondem a quantização mais grosseira.
O tamanho da etapa de quantização aplicável pode ser indicado por um parâmetro de quantização (QP). O parâmetro de quantização pode ser, por exemplo, um índice para um conjunto predefinido de tamanhos de etapas de quantização aplicáveis.
Por exemplo, pequenos parâmetros de quantização podem corresponder a quantização fina (tamanhos de etapas de quantização pequenos) e parâmetros de quantização grandes podem corresponder a quantização grosseira (tamanhos de etapas de quantização grandes) ou vice-versa.
A quantização pode incluir divisão por um tamanho de etapa de quantização e desquantização correspondente ou inversa, por exemplo, por quantização inversa 210, pode incluir multiplicação pelo tamanho da etapa de quantização.
As modalidades de acordo com alguns padrões, por exemplo, HEVC, podem ser configuradas para usar um parâmetro de quantização para determinar o tamanho da etapa de quantização.
Geralmente, o tamanho da etapa de quantização pode ser calculado com base em um parâmetro de quantização usando uma aproximação de ponto fixo de uma equação incluindo divisão.
Fatores de escalonamento adicionais podem ser introduzidos para quantização e desquantização para restaurar a norma do bloco residual, que pode ser modificada por causa do escalonamento usado na aproximação de ponto fixo da equação para tamanho da etapa de quantização e parâmetro de quantização. Em uma implementação de exemplo, o escalonamento da transformada inversa e a desquantização podem ser combinados. Alternativamente, tabelas de quantização personalizadas podem ser usadas e sinalizadas de um codificador para um decodificador, por exemplo, em um fluxo de bits. A quantização é uma operação com perdas, em que a perda aumenta com o aumento dos tamanhos das etapas de quantização.
[0103] A unidade de quantização inversa 210 é configurada para aplicar a quantização inversa da unidade de quantização 208 nos coeficientes quantizados para obter coeficientes desquantizados 211, por exemplo, aplicando o inverso do esquema de quantização aplicado pela unidade de quantização 208 com base em ou usando o mesmo tamanho de etapa de quantização como a unidade de quantização 208. Os coeficientes desquantizados 211 também podem ser referidos como coeficientes residuais desquantizados 211 e correspondem - embora normalmente não sejam idênticos aos coeficientes de transformada devido à perda por quantização - aos coeficientes de transformada 207.
[0104] A unidade de processamento de transformada inversa 212 é configurada para aplicar a transformada inversa da transformada aplicada pela unidade de processamento de transformada 206, por exemplo, uma transformada de cosseno discreta inversa (DCT) ou transformada de seno discreta inversa (DST), para obter um bloco de transformada inversa
213 em o domínio de amostra. O bloco de transformada inversa 213 também pode ser referido como bloco desquantizado de transformada inversa 213 ou bloco residual de transformada inversa 213.
[0105] A unidade de reconstrução 214 (por exemplo, somador 214) é configurada para adicionar o bloco de transformada inversa 213 (isto é, bloco residual reconstruído 213) ao bloco de predição 265 para obter um bloco reconstruído 215 no domínio de amostra, por exemplo, adicionando os valores de amostra do bloco residual reconstruído 213 e os valores de amostra do bloco de predição
265.
[0106] Opcionalmente, a unidade de armazenamento temporário 216 (ou "armazenamento temporário" 216), por exemplo, um armazenamento temporário em linha 216, é configurada para armazenamento temporário ou armazenar o bloco reconstruído 215 e os respectivos valores de amostra, por exemplo, para intrapredição. Em outras modalidades, o codificador pode ser configurado para usar blocos reconstruídos não filtrados e / ou os respectivos valores de amostra armazenados na unidade de armazenamento temporário 216 para qualquer tipo de estimativa e / ou predição, por exemplo, intrapredição.
[0107] As modalidades do codificador 200 podem ser configuradas de modo que, por exemplo, a unidade de armazenamento temporário 216 não seja usada apenas para armazenar os blocos reconstruídos 215 para intrapredição 254, mas também para a unidade de filtro de repetição 220 (não mostrada na FIG. 2), e / ou de modo que, por exemplo, a unidade de armazenamento temporário 216 e a unidade de armazenamento temporário de imagem decodificada 230 formem um armazenamento temporário. Outras modalidades podem ser configuradas para usar blocos filtrados 221 e / ou blocos ou amostras do armazenamento temporário de imagem decodificada 230 (ambos não mostrados na Fig. 2) como entrada ou base para intrapredição 254.
[0108] A unidade de filtro de repetição 220 (ou "filtro de repetição" 220), é configurada para filtrar o bloco reconstruído 215 para obter um bloco filtrado 221, por exemplo, para suavizar as transições de pixel, ou de outra forma melhorar a qualidade de vídeo. A unidade de filtro de repetição 220 se destina a representar um ou mais filtros de repetição, como um filtro de desbloqueio, um filtro de deslocamento adaptativo de amostra (SAO) ou outros filtros, por exemplo, um filtro bilateral ou um filtro de repetição adaptativo (ALF) ou um filtro de nitidez ou filtros de suavização ou filtros colaborativos. Embora a unidade de filtro de repetição 220 seja mostrada na FIG. 2 como sendo um filtro de repetição, em outras configurações, a unidade de filtro de repetição 220 pode ser implementada como um filtro pós-repetição. O bloco filtrado 221 também pode ser referido como bloco reconstruído filtrado 221. O armazenamento temporário de imagem decodificada 230 pode armazenar os blocos de codificação reconstruídos após a unidade de filtro de repetição 220 realizar as operações de filtragem nos blocos de codificação reconstruídos.
[0109] As modalidades do codificador 200 (respectivamente unidade de filtro de repetição 220) podem ser configuradas para emitir parâmetros de filtro de repetição (tais como informações de deslocamento adaptativo de amostra), por exemplo, diretamente ou entropia codificada através da unidade de codificação de entropia 270 ou qualquer outra unidade de codificação de entropia, de modo que, por exemplo, um decodificador 300 pode receber e aplicar os mesmos parâmetros de filtro de repetição para decodificação.
[0110] O armazenamento temporário de imagem decodificada (DPB) 230 pode ser uma memória de imagem de referência que armazena dados de imagem de referência para uso na codificação de dados de vídeo pelo codificador de vídeo 20. O DPB 230 pode ser formado por qualquer um de uma variedade de dispositivos de memória, como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magneto-resistiva (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. O DPB 230 e o armazenamento temporário 216 podem ser fornecidos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em algum exemplo, o armazenamento temporário de imagem decodificada (DPB) 230 é configurado para armazenar o bloco filtrado 221. O armazenamento temporário de imagem decodificada 230 pode ser ainda configurado para armazenar outros blocos previamente filtrados, por exemplo, blocos previamente reconstruídos e filtrados 221, da mesma imagem atual ou de imagens diferentes, por exemplo, imagens previamente reconstruídas, e pode fornecer reconstrução completa anterior, ou seja, decodificada, imagens (e blocos de referência e amostras correspondentes) e / ou uma imagem atual parcialmente reconstruída (e blocos de referência e amostras correspondentes), por exemplo, para interpredição. Em algum exemplo, se o bloco reconstruído 215 for reconstruído, mas sem filtragem em repetição, o armazenamento temporário de imagem decodificada (DPB) 230 é configurado para armazenar o bloco reconstruído 215.
[0111] A unidade de processamento de predição 260, também conhecida como unidade de processamento de predição de bloco 260, é configurada para receber ou obter o bloco 203 (bloco atual 203 da imagem atual 201) e dados de imagem reconstruídos, por exemplo, amostras de referência da mesma imagem (atual) do armazenamento temporário 216 e / ou dados de imagem de referência 231 de uma ou uma pluralidade de imagens previamente decodificadas do armazenamento temporário de imagem decodificada 230 e para processar tais dados para predição, isto é, para fornecer um bloco de predição 265, que pode ser um bloco interpredito 245 ou um bloco intrapredito 255.
[0112] A unidade de seleção de modo 262 pode ser configurada para selecionar um modo de predição (por exemplo, um modo intrapredição ou interpredição) e / ou um bloco de predição correspondente 245 ou 255 para ser usado como bloco de predição 265 para o cálculo do bloco residual 205 e para a reconstrução do bloco reconstruído 215.
[0113] As modalidades da unidade de seleção de modo 262 podem ser configuradas para selecionar o modo de predição (por exemplo, daqueles suportados pela unidade de processamento de predição 260), que fornece a melhor correspondência ou, em outras palavras, o residual mínimo (residual mínimo significa melhor compactação para transmissão ou armazenamento), ou um overhead de sinalização mínima (overhead de sinalização mínima significa melhor compactação para transmissão ou armazenamento), ou que considera ou equilibra ambos. A unidade de seleção de modo
262 pode ser configurada para determinar o modo de predição com base na otimização de distorção de taxa (RDO), ou seja, selecionar o modo de predição que fornece uma otimização de distorção de taxa mínima ou cuja distorção de taxa associada, pelo menos, atende um critério de seleção de modo de predição.
[0114] A seguir, o processamento de predição (por exemplo, unidade de processamento de predição 260 e seleção de modo (por exemplo, por unidade de seleção de modo 262)) realizado por um codificador de exemplo 200 será explicado em mais detalhes.
[0115] Conforme descrito acima, o codificador 200 é configurado para determinar ou selecionar o melhor ou um modo de predição ótimo a partir de um conjunto de modos de predição (pré-determinados). O conjunto de modos de predição pode compreender, por exemplo, modos de intrapredição e / ou modos de interpredição.
[0116] O conjunto de modos de intrapredição pode compreender 35 modos de intrapredição diferentes, por exemplo, modos não direcionais como modo DC (ou médio) e modo planar, ou modos direcionais, por exemplo, conforme definido em H.265, ou pode compreender 67 modos intrapredição diferentes, por exemplo, modos não direcionais como modo DC (ou média) e modo planar, ou modos direcionais, por exemplo, conforme definido em H.266 em desenvolvimento.
[0117] O conjunto de (ou possíveis) modos de interpredição dependem das imagens de referência disponíveis (ou seja, imagens anteriores pelo menos parcialmente decodificadas, por exemplo, armazenadas em DBP 230) e outros parâmetros de interpredição, por exemplo, se a imagem de referência inteira ou apenas uma parte, por exemplo, uma área de janela de pesquisa em torno da área do bloco atual, da imagem de referência ser usada para pesquisar um bloco de referência de melhor correspondência e / ou por exemplo, se a interpolação de pixel é aplicada, por exemplo, interpolação da metade / semi-pel e / ou quarto de pel, ou não.
[0118] Além dos modos de predição acima, o modo de salto e / ou o modo direto podem ser aplicados.
[0119] A unidade de processamento de predição 260 pode ainda ser configurada para particionar o bloco 203 em partições de bloco menores ou sub-blocos, por exemplo, iterativamente usando particionamento de quad-tree (QT), partição binária (BT) ou partição de árvore tripla (TT) ou qualquer combinação dos mesmos, e para realizar, por exemplo, a predição para cada uma das partições de bloco ou sub- blocos, em que a seleção de modo compreende a seleção da estrutura de árvore do bloco particionado 203 e os modos de predição aplicados a cada uma das partições de bloco ou sub- blocos.
[0120] A unidade de interpredição 244 pode incluir unidade de estimativa de movimento (ME) e unidade de compensação de movimento (MC) (não mostrada na FIG. 2). A unidade de estimativa de movimento é configurada para receber ou obter o bloco de imagem 203 (bloco de imagem atual 203 da imagem atual 201) e uma imagem decodificada 331, ou pelo menos um ou uma pluralidade de blocos previamente reconstruídos, por exemplo, blocos reconstruídos de uma ou um pluralidade de outras / diferentes imagens previamente decodificadas 331, para estimativa de movimento. Por exemplo, uma sequência de vídeo pode compreender a imagem atual e a imagem previamente decodificada 331, ou em outras palavras, a imagem atual e a imagem previamente decodificada 331 podem fazer parte de ou formar uma sequência de imagens formando uma sequência de vídeo.
O codificador 200 pode, por exemplo, ser configurado para selecionar um bloco de referência de uma pluralidade de blocos de referência das mesmas ou diferentes imagens da pluralidade de outras imagens e fornecer uma imagem de referência (ou índice de imagem de referência, ...) e / ou um deslocamento (deslocamento espacial) entre a posição (coordenadas x, y) do bloco de referência e a posição do bloco atual como parâmetros de interpredição para a unidade de estimativa de movimento (não mostrado na FIG. 2). Este deslocamento também é chamado de vetor de movimento (MV). A mesclagem é uma importante ferramenta de estimativa de movimento usada em HEVC e herdada para VVC.
Para realizar a estimativa de mesclagem, a primeira coisa que deve ser feita é construir uma lista de candidatos de mesclagem onde cada um dos candidatos contém todos os dados de movimento, incluindo as informações se uma ou duas listas de imagens de referência são usadas, assim como um índice de referência e um vetor de movimento para cada lista.
A lista de candidatos de mesclagem é construída com base nos seguintes candidatos: a. até quatro candidatos de mesclagem espacial que são derivados de cinco blocos vizinhos espaciais (ou seja, vizinhos); b. um candidato a mesclagem temporal derivado de dois blocos temporais colocalizados; c. candidatos de mesclagem adicionais, incluindo candidatos bipreditivos combinados e candidatos de vetor de movimento zero.
[0121] A unidade de intrapredição 254 é ainda configurada para determinar com base no parâmetro de intrapredição, por exemplo, o modo de intrapredição selecionado, o bloco de intrapredição 255. Em qualquer caso, após selecionar um modo de intrapredição para um bloco, a unidade de intrapredição 254 também é configurada para fornecer parâmetro de intrapredição, isto é, informação indicativa do modo de intrapredição selecionado para o bloco para a unidade de codificação de entropia 270. Em um exemplo, a unidade de intrapredição 254 pode ser configurada para realizar qualquer combinação das técnicas de intrapredição descritas posteriormente.
[0122] A unidade de codificação de entropia 270 é configurada para aplicar um algoritmo ou esquema de codificação de entropia (por exemplo, um esquema de codificação de comprimento variável (VLC), um esquema de VLC adaptável ao contexto (CALVC), um esquema de codificação aritmética, uma codificação aritmética binária adaptável ao contexto (CABAC) , codificação aritmética binária adaptável ao contexto baseada em sintaxe (SBAC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outra metodologia ou técnica de codificação de entropia) nos coeficientes residuais quantizados 209, parâmetros de interpredição, parâmetro de intrapredição, e / ou parâmetros de filtro de repetição, individualmente ou em conjunto (ou não) para obter dados de imagem codificados 21 os quais podem ser emitidos pela saída 272, por exemplo, na forma de um fluxo de bits codificado 21. O fluxo de bits codificado 21 pode ser transmitido para o decodificador de vídeo 30 ou arquivado para transmissão ou recuperação posterior pelo decodificador de vídeo 30. A unidade de codificação de entropia 270 pode ser ainda configurada para codificar por entropia os outros elementos de sintaxe para a fatia de vídeo atual sendo codificada.
[0123] Outras variações estruturais do codificador de vídeo 200 podem ser usadas para codificar o fluxo de vídeo. Por exemplo, um codificador não baseado em transformada 200 pode quantizar o sinal residual diretamente sem a unidade de processamento de transformada 206 para certos blocos ou quadros. Em outra implementação, um codificador 200 pode ter a unidade de quantização 208 e a unidade de quantização inversa 210 combinadas em uma única unidade.
[0124] FIG. 3 mostra um decodificador de vídeo 300 exemplar que é configurado para implementar as técnicas da presente divulgação. O decodificador de vídeo 300 configurado para receber dados de imagem codificados (por exemplo, fluxo de bits codificado) 271, por exemplo, codificados pelo codificador 200, para obter uma imagem decodificada 331. Durante o processo de decodificação, o decodificador de vídeo 300 recebe dados de vídeo, por exemplo, um fluxo de bits de vídeo codificado que representa blocos de imagem de uma fatia de vídeo codificada e elementos de sintaxe associados, do codificador de vídeo 200.
[0125] No exemplo da FIG. 3, o decodificador 300 compreende uma unidade de decodificação de entropia 304, uma unidade de quantização inversa 310, uma unidade de processamento de transformada inversa 312, uma unidade de reconstrução 314 (por exemplo, um somador 314), um armazenamento temporário 316, um filtro de repetição 320, um armazenamento temporário de imagem decodificada 330 e uma unidade de processamento de predição 360. A unidade de processamento de predição 360 pode incluir uma unidade de interpredição 344, uma unidade de intrapredição 354 e uma unidade de seleção de modo 362. O decodificador de vídeo 300 pode, em alguns exemplos, realizar uma passagem de decodificação geralmente recíproca para a passagem de codificação descrita em relação ao codificador de vídeo 200 da FIG. 2.
[0126] A unidade de decodificação de entropia 304 é configurada para realizar a decodificação de entropia para os dados de imagem codificados 271 para obter, por exemplo, coeficientes quantizados 309 e / ou parâmetros de codificação decodificados (não mostrados na FIG. 3), por exemplo, (decodificado) qualquer ou todos os parâmetros de interpredição, parâmetro de intrapredição, parâmetros de filtro de repetição e / ou outros elementos de sintaxe. A unidade de decodificação de entropia 304 é ainda configurada para encaminhar parâmetros de interpredição, parâmetro de intrapredição e / ou outros elementos de sintaxe para a unidade de processamento de predição 360. O decodificador de vídeo 300 pode receber os elementos de sintaxe no nível de fatia de vídeo e / ou nível de bloco de vídeo.
[0127] A unidade de quantização inversa 310 pode ser idêntica em função à unidade de quantização inversa 110, a unidade de processamento de transformada inversa 312 pode ser idêntica em função à unidade de processamento de transformada inversa 112, a unidade de reconstrução 314 pode ser idêntica em função à unidade de reconstrução 114, o armazenamento temporário 316 pode ser idêntico em função ao armazenamento temporário 116, o filtro de repetição 320 pode ser idêntico em função ao filtro de repetição 120 e o armazenamento temporário de imagem decodificada 330 pode ser idêntico em função ao armazenamento temporário de imagem decodificada 130.
[0128] A unidade de processamento de predição 360 pode compreender uma unidade de interpredição 344 e uma unidade de intrapredição 354, em que a unidade de interpredição 344 pode se assemelhar à unidade de interpredição 144 em função, e a unidade de intrapredição 354 pode se assemelhar à unidade de intrapredição 154 em função. A unidade de processamento de predição 360 é tipicamente configurada para realizar a predição de bloco e / ou obter o bloco de predição 365 a partir dos dados codificados 21 e para receber ou obter (explicitamente ou implicitamente) os parâmetros relacionados à predição e / ou as informações sobre o modo de predição selecionado, por exemplo, a partir da unidade de decodificação de entropia 304.
[0129] Quando a fatia de vídeo é codificada como uma fatia intracodificada (I), a unidade de intrapredição 354 da unidade de processamento de predição 360 é configurada para gerar o bloco de predição 365 para um bloco de imagem da fatia de vídeo atual com base em um modo de intrapredição sinalizado e dados de blocos previamente decodificados do quadro ou imagem atual. Quando o quadro de vídeo é codificado como uma fatia intercodificada (isto é, B ou P), a unidade de interpredição 344 (por exemplo, unidade de compensação de movimento) da unidade de processamento de predição 360 é configurada para produzir blocos de predição 365 para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação de entropia 304. Para interpredição, os blocos de predição podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagens de referência. O decodificador de vídeo 300 pode construir as listas de quadros de referência, Lista 0 e Lista 1, usando técnicas de construção padrão com base em imagens de referência armazenadas no DPB 330.
[0130] A unidade de processamento de predição 360 é configurada para determinar as informações de predição para um bloco de vídeo da fatia de vídeo atual, analisando os vetores de movimento e outros elementos de sintaxe, e usa as informações de predição para produzir os blocos de predição para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de processamento de predição 360 usa alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, intrapredição ou interpredição) usado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de interpredição (por exemplo, fatia B, Fatia P ou fatia GPB), informações de construção para uma ou mais das listas de imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo intercodificado da fatia, estado de interpredição para cada bloco de vídeo intercodificado da fatia, e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.
[0131] A unidade de quantização inversa 310 é configurada para quantizar inversamente, isto é, desquantizar, os coeficientes de transformada quantizados fornecidos no fluxo de bits e decodificados pela unidade de decodificação de entropia 304. O processo de quantização inversa pode incluir o uso de um parâmetro de quantização calculado pelo codificador de vídeo 100 para cada bloco de vídeo na fatia de vídeo para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa que deve ser aplicado.
[0132] A unidade de processamento de transformada inversa 312 é configurada para aplicar uma transformada inversa, por exemplo, uma DCT inversa, uma transformada de inteiro inversa ou um processo de transformada inversa conceitualmente semelhante, aos coeficientes de transformada a fim de produzir blocos residuais no domínio do pixel.
[0133] A unidade de reconstrução 314 (por exemplo, somador 314) é configurada para adicionar o bloco de transformada inversa 313 (ou seja, bloco residual reconstruído 313) ao bloco de predição 365 para obter um bloco reconstruído 315 no domínio de amostra, por exemplo, adicionando os valores de amostra do bloco residual reconstruído 313 e os valores de amostra do bloco de predição
365.
[0134] A unidade de filtro de repetição 320 (ou na repetição de codificação ou após a repetição de codificação) é configurada para filtrar o bloco reconstruído 315 para obter um bloco filtrado 321, por exemplo, para suavizar as transições de pixel, ou de outra forma melhorar a qualidade de vídeo. Em um exemplo, a unidade de filtro de repetição 320 pode ser configurada para realizar qualquer combinação das técnicas de filtragem descritas posteriormente. A unidade de filtro de repetição 320 se destina a representar um ou mais filtros de repetição, como um filtro de desbloqueio, um filtro de deslocamento adaptativo de amostra (SAO) ou outros filtros, por exemplo, um filtro bilateral ou um filtro de repetição adaptativo (ALF) ou um filtro de nitidez ou suavização, ou filtros colaborativos. Embora a unidade de filtro de repetição 320 seja mostrada na FIG. 3 como sendo um filtro de repetição, em outras configurações, a unidade de filtro de repetição 320 pode ser implementada como um filtro pós-repetição.
[0135] Os blocos de vídeo decodificados 321 em um determinado quadro ou imagem são então armazenados no armazenamento temporário de imagem decodificada 330, que armazena imagens de referência usadas para compensação de movimento subsequente.
[0136] O decodificador 300 é configurado para emitir a imagem decodificada 311, por exemplo, através da saída 312, para apresentação ou visualização para um usuário.
[0137] Outras variações do decodificador de vídeo 300 podem ser usadas para decodificar o fluxo de bits compactado. Por exemplo, o decodificador 300 pode produzir o fluxo de vídeo de saída sem a unidade de filtragem de repetição 320. Por exemplo, um decodificador não baseado em transformada 300 pode quantificar inversamente o sinal residual diretamente sem a unidade de processamento de transformada inversa 312 para certos blocos ou quadros. Em outra implementação, o decodificador de vídeo 300 pode ter a unidade de quantização inversa 310 e a unidade de processamento de transformada inversa 312 combinadas em uma única unidade.
[0138] A FIG. 4 é um diagrama esquemático de um dispositivo de rede 400 (por exemplo, um dispositivo de codificação) de acordo com uma modalidade da divulgação. O dispositivo de rede 400 é adequado para implementar as modalidades divulgadas, conforme descrito neste documento.
Em uma modalidade, o dispositivo de rede 400 pode ser um decodificador, como o decodificador de vídeo 30 da FIG. 1A ou um codificador, como o codificador de vídeo 20 da FIG. 1A. Em uma modalidade, o dispositivo de rede 400 pode ser um ou mais componentes do decodificador de vídeo 30 da FIG. 1A ou o codificador de vídeo 20 da FIG. 1A conforme descrito acima.
[0139] O dispositivo de rede 400 compreende portas de ingresso 410 e unidades de recebimento (Rx) 420 para receber dados; um processador, unidade lógica, ou unidade central de processamento (CPU) 430 para processar os dados; unidades transmissoras (Tx) 440 e portas de egresso 450 para transmitir os dados; e uma memória 460 para armazenar os dados. O dispositivo de rede 400 também pode compreender componentes ópticos para elétricos (OE) e componentes elétricos para ópticos (EO) acoplados às portas de ingresso 410, unidades de recebimento 420, unidades transmissoras 440 e portas de egresso 450 para egresso ou ingresso de sinais ópticos ou elétricos.
[0140] O processador 430 é implementado por hardware e software. O processador 430 pode ser implementado como um ou mais chips CPU, núcleos (por exemplo, como um processador multi-núcleo), FPGAs, ASICs e DSPs. O processador 430 está em comunicação com as portas de ingresso 410, unidades de recebimento 420, unidades transmissoras 440, portas de egresso 450 e memória 460. O processador 430 compreende um módulo de codificação 470. O módulo de codificação 470 implementa as modalidades divulgadas descritas acima. Por exemplo, o módulo de codificação 470 implementa, processa, prepara ou fornece as várias operações de codificação. A inclusão do módulo de codificação 470, portanto, fornece uma melhoria substancial para a funcionalidade do dispositivo de rede 400 e efetua uma transformação do dispositivo de rede 400 para um estado diferente. Alternativamente, o módulo de codificação 470 é implementado como instruções armazenadas na memória 460 e executadas pelo processador 430.
[0141] A memória 460 compreende um ou mais discos, unidades de fita e unidades de estado sólido e pode ser usada como um dispositivo de armazenamento de dados de fluxo excessivo, para armazenar programas quando tais programas são selecionados para execução, e para armazenar instruções e dados que são lidos durante a execução do programa. A memória 460 pode ser memória volátil e / ou não volátil e pode ser memória somente leitura (ROM), memória de acesso aleatório (RAM), memória endereçável por conteúdo ternário (TCAM), e / ou memória de acesso aleatório estática (SRAM).
[0142] FIG. 5 é um diagrama de blocos simplificado de um aparelho 500 que pode ser usado como um ou ambos o dispositivo de origem 12 e o dispositivo de destino 14 da FIG. 1A de acordo com uma modalidade exemplar. O aparelho 500 pode implementar técnicas da presente divulgação. O aparelho 500 pode estar na forma de um sistema de computação, incluindo múltiplos dispositivos de computação, ou na forma de um único dispositivo de computação, por exemplo, um telefone móvel, um tablet, um laptop, um notebook, um desktop, e similar.
[0143] Um processador 502 no aparelho 500 pode ser uma unidade central de processamento. Alternativamente, o processador 502 pode ser qualquer outro tipo de dispositivo, ou múltiplos dispositivos, capazes de manipular ou processar informações agora existentes ou desenvolvidas posteriormente. Embora as implementações divulgadas possam ser praticadas com um único processador, como mostrado, por exemplo, o processador 502, vantagens em velocidade e eficiência podem ser alcançadas usando mais de um processador.
[0144] Uma memória 504 no aparelho 500 pode ser um dispositivo de memória somente leitura (ROM) ou um dispositivo de memória de acesso aleatório (RAM) em uma implementação. Qualquer outro tipo adequado de dispositivo de armazenamento pode ser usado como a memória 504. A memória 504 pode incluir código e dados 506 que são acessados pelo processador 502 usando um barramento 512. A memória 504 pode incluir ainda um sistema operacional 508 e programas de aplicativos 510, os programas de aplicativos 510 incluindo pelo menos um programa que permite que o processador 502 realize os métodos descritos aqui. Por exemplo, os programas de aplicativo 510 podem incluir aplicativos de 1 a N, que incluem ainda um aplicativo de codificação de vídeo que realiza os métodos descritos aqui. O aparelho 500 também pode incluir memória adicional na forma de um armazenamento secundário 514, que pode, por exemplo, ser um cartão de memória usado com um dispositivo de computação móvel. Como as sessões de comunicação de vídeo podem conter uma quantidade significativa de informações, elas podem ser armazenadas no todo ou em parte no armazenamento secundário 514 e carregadas na memória 504 conforme necessário para o processamento.
[0145] O aparelho 500 também pode incluir um ou mais dispositivos de saída, como uma tela de exibição 518. A tela de exibição 518 pode ser, em um exemplo, uma tela de exibição sensível ao toque que combina uma tela de exibição com um elemento sensível ao toque que é operável para detectar entradas de toque. A tela de exibição 518 pode ser acoplada ao processador 502 através do barramento 512. Outros dispositivos de saída que permitem a um usuário programar ou de outra forma usar o aparelho 500 podem ser fornecidos além ou como uma alternativa à tela de exibição 518. Quando o dispositivo de saída é ou inclui uma tela de exibição, a tela de exibição pode ser implementada de várias maneiras, incluindo por uma tela de exibição de cristal líquido (LCD), uma tela de exibição de tubo de raios catódicos (CRT), uma tela de exibição de plasma ou tela de exibição de diodo emissor de luz (LED), como uma tela de exibição de LED orgânico (OLED).
[0146] O aparelho 500 também pode incluir ou estar em comunicação com um dispositivo sensor de imagem 520, por exemplo, uma câmera ou qualquer outro dispositivo sensor de imagem 520 agora existente ou desenvolvido posteriormente que pode detectar uma imagem, tal como a imagem de um usuário operando o aparelho 500. O dispositivo sensor de imagem 520 pode ser posicionado de modo que seja direcionado para o usuário que opera o aparelho 500. Em um exemplo, a posição e o eixo óptico do dispositivo sensor de imagem 520 podem ser configurados de modo que o campo de visão inclua uma área que é diretamente adjacente à tela de exibição 518 e a partir da qual a tela de exibição 518 é visível.
[0147] O aparelho 500 também pode incluir ou estar em comunicação com um dispositivo sensor de som 522, por exemplo, um microfone, ou qualquer outro dispositivo de detecção de som agora existente ou desenvolvido posteriormente que pode detectar sons perto do aparelho 500. O dispositivo sensor de som 522 pode ser posicionado de modo que seja direcionado para o usuário que opera o aparelho 500 e pode ser configurado para receber sons, por exemplo, fala ou outras elocuções, feitas pelo usuário enquanto o usuário opera o aparelho 500.
[0148] Embora a FIG. 5 representa o processador 502 e a memória 504 do aparelho 500 como sendo integrados em uma única unidade, outras configurações podem ser utilizadas. As operações do processador 502 podem ser distribuídas em múltiplas máquinas (cada máquina tendo um ou mais dos processadores) que podem ser acopladas diretamente ou através de uma área local ou outra rede. A memória 504 pode ser distribuída por múltiplas máquinas, como uma memória baseada em rede ou memória em múltiplas máquinas realizando as operações do aparelho 500. Embora representado aqui como um único barramento, o barramento 512 do aparelho 500 pode ser composto de múltiplos barramentos. Além disso, o armazenamento secundário 514 pode ser diretamente acoplado a outros componentes do aparelho 500 ou pode ser acessado através de uma rede e pode compreender uma única unidade integrada, como um cartão de memória, ou múltiplas unidades, como múltiplos cartões de memória. O aparelho 500 pode, assim, ser implementado em uma ampla variedade de configurações.
[0149] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código em um meio legível por computador e executadas por uma unidade de processamento baseada em hardware. O meio legível por computador pode incluir meio de armazenamento legível por computador, o qual corresponde a um meio tangível, como meio de armazenamento de dados ou meio de comunicação, incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Desta maneira, o meio legível por computador geralmente pode corresponder a (1) meio de armazenamento legível por computador tangível que é não transitório ou (2) um meio de comunicação, como um sinal ou onda portadora. O meio de armazenamento de dados pode ser qualquer meio disponível que pode ser acessado por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e / ou estruturas de dados para implementação das técnicas descritas nesta divulgação. Um produto de programa de computador pode incluir um meio legível por computador.
[0150] As técnicas de compactação de vídeo, como compensação de movimento, intrapredição e filtros de repetição, provaram ser eficazes e, portanto, adotadas em vários padrões de codificação de vídeo, como H.264 / AVC e H.265 / HEVC. A intrapredição pode ser usada quando não há imagem de referência disponível, ou quando a codificação de interpredição não é usada para o bloco ou imagem atual, por exemplo em quadro I ou fatia I. As amostras de referência de intrapredição são geralmente derivadas de blocos vizinhos previamente codificados (ou reconstruídos) na mesma imagem. Por exemplo, tanto em H.264 / AVC quanto em H.265 / HEVC, as amostras de limites de blocos adjacentes são usadas como referência para intrapredição. A fim de cobrir diferentes texturas ou características estruturais, existem muitos modos diferentes de intrapredição. Em cada modo, um método de derivação de sinal de predição diferente é usado. Por exemplo, H.265 / HEVC suporta um total de 35 modos de intrapredição, como mostrado na FIG. 6. Descrição do algoritmo de intrapredição de H.265 / HEVC
[0151] Para intrapredição, as amostras de limite decodificadas de blocos adjacentes são usadas como referência. O codificador seleciona o melhor modo de intrapredição luma de cada bloco entre 35 opções: 33 modos de predição direcional, um modo DC e um modo Planar. O mapeamento entre a direção de intrapredição e o número do modo de intrapredição é especificado na FIG. 6. Deve-se notar que 65 ou mais modos de intrapredição são desenvolvidos na mais recente tecnologia de codificação de vídeo, por exemplo, VVC (versatile video coding, codificação de vídeo versátil), que pode capturar direções de borda arbitrárias apresentadas em vídeo natural.
[0152] Como mostrado na FIG. 7, o bloco "CUR" é um bloco atual a ser predito, as amostras cinzas ao longo do limite de blocos construídos adjacentes (à esquerda e acima do bloco atual) são usadas como amostras de referência. O sinal de predição pode ser derivado mapeando as amostras de referência de acordo com um método específico que é indicado pelo modo de intrapredição.
[0153] Com referência à FIG. 7, W é a largura do bloco atual, H é a altura do bloco atual. W1 é o número das amostras de referência superior. H1 é o número de amostras de referência à esquerda. Normalmente, W1> W e H1> H. o que significa que as amostras de referência superior também incluem as amostras de referência superior direita (vizinhas), as amostras de referência à esquerda também incluem as amostras de referência inferior esquerda (vizinhas). Por exemplo, H1 = 2 * H, W1 = 2 * W ou H1 = H + W, W1 = W + H.
[0154] As amostras de referência nem sempre estão disponíveis. Como mostrado na FIG. 8, por exemplo, após o processo de verificação de disponibilidade, as amostras W2 estão disponíveis no topo ou acima do bloco atual e as amostras H2 estão disponíveis à esquerda do bloco atual. As amostras W3 não estão disponíveis na parte superior, e as amostras H3 não estão disponíveis à esquerda.
[0155] Essas amostras indisponíveis precisam ser substituídas (ou preenchidas) usando as amostras disponíveis antes de obter o sinal de predição. Por exemplo, as amostras indisponíveis são substituídas pela varredura das amostras de referência no sentido horário e usando o último valor de amostra disponível para as indisponíveis. Quanto à parte inferior das amostras de referência à esquerda, se não estiverem disponíveis, são substituídas pelo valor da amostra de referência disponível mais próxima. Verificação de disponibilidade de amostras de referência
[0156] A verificação da disponibilidade das amostras de referência significa verificar se as amostras de referência estão disponíveis. Por exemplo, se uma amostra de referência foi reconstruída, a amostra de referência está disponível.
[0157] Em métodos existentes, geralmente, o processo de verificação de disponibilidade é feito verificando amostras de luma, o que significa que, mesmo para um bloco de componente de croma, a disponibilidade de amostras de referência é derivada verificando a disponibilidade das amostras de luma correspondentes.
[0158] Nos métodos propostos da presente divulgação, para um bloco, o processo de verificação de disponibilidade de amostras de referência é realizado verificando amostras de seu próprio componente. Aqui, o componente pode ser componente Y, componente Cb ou componente Cr. De acordo com os métodos propostos, para um bloco, o processo de verificação da disponibilidade das amostras de referência é realizado verificando amostras do seu componente correspondente. Aqui, o componente pode ser o componente Luma ou o componente Croma, que pode incluir o componente Cb e o componente Cr. Aqui, o componente Cb e o componente Cr são referidos como componente Croma e não são diferenciados no processo de verificação de disponibilidade.
[0159] Um conjunto de métodos é apresentado nesta invenção com ênfase nos dois aspectos seguintes.
[0160] De acordo com o primeiro aspecto da presente divulgação, para um bloco, o processo de verificação de disponibilidade de amostras de referência é feito verificando amostras de seu próprio componente. Aqui, o componente pode ser componente Y, componente Cb ou componente Cr.
[0161] Para um bloco Y, a disponibilidade de uma amostra de referência do bloco Y é derivada verificando se a amostra de referência está disponível, por exemplo, verificando se a amostra de referência foi reconstruída.
[0162] Para um bloco Cb, a disponibilidade de uma amostra de referência do bloco Cb é derivada verificando se a amostra de referência está disponível, por exemplo, verificando se a amostra de referência foi reconstruída.
[0163] Para um bloco Cr, a disponibilidade de uma amostra de referência do bloco Cr é derivada verificando se a amostra de referência está disponível, por exemplo, verificando se a amostra de referência foi reconstruída.
[0164] De acordo com o segundo aspecto da presente divulgação, para um bloco, o processo de verificação de disponibilidade de amostras de referência é realizado verificando amostras de seu componente correspondente. Aqui, o componente pode ser o componente Luma, ou o componente Croma. O componente Y é conhecido como componente luma. Tanto o componente Cb quanto o componente Cr são chamados de componente croma. Aqui, o componente Cb e o componente Cr não são diferenciados no processo de verificação de disponibilidade.
[0165] Para um bloco Luma, a disponibilidade de uma amostra de referência do bloco Luma é derivada verificando se a amostra de referência está disponível, por exemplo, verificando se a amostra de referência foi reconstruída.
[0166] Para um bloco Croma, a disponibilidade de uma amostra de referência do bloco Croma é derivada verificando se a amostra de referência está disponível, por exemplo, verificando se a amostra de referência foi reconstruída.
[0167] Em soluções existentes, para um bloco, o processo de verificação da disponibilidade das amostras de referência é sempre feito verificando as amostras luma, independentemente do componente a que pertence o bloco. Em contraste, nos métodos propostos da presente divulgação, para os blocos pertencerem a diferentes componentes, seu processo de verificação de disponibilidade de amostras de referência é realizado verificando diferentes amostras de componentes.
[0168] Aqui, observe que os métodos propostos nesta divulgação são usados para derivar a disponibilidade de amostras de referência de um bloco codificado como modo de intrapredição. O método pode ser realizado pelo módulo de intrapredição 254 ou 354 mostrado na FIG. 2 e 3, respectivamente. Portanto, o método existe tanto no lado do decodificador quanto no lado do codificador. E, o processo de verificação de disponibilidade das amostras de referência de um bloco é o mesmo no codificador e no decodificador.
[0169] FIG. 9 é um fluxograma simplificado que ilustra um método para derivar um sinal reconstruído de acordo com uma modalidade exemplar da presente divulgação. Com referência à FIG. 9, para um bloco codificado como modo de intrapredição, para obter o bloco reconstruído (ou sinal, ou amostras), o método inclui em primeiro lugar obter a predição (ou sinal ou amostras de predição) do bloco (901). Depois disso, o método inclui a obter um residual (ou sinal residual) do bloco (902). Então, o método inclui derivar o bloco reconstruído adicionando o residual à predição do bloco atual (903).
[0170] A FIG. 10 é um fluxograma simplificado de derivação de uma predição (ou sinal de predição) de acordo com uma modalidade exemplar da presente divulgação. Com referência à FIG. 10, para obter o sinal de predição, o método inclui, em primeiro lugar, a obtenção do modo de intrapredição de um bloco atual, como o modo Planar, ou modo DC ... (1001). Depois disso, o método inclui derivar a disponibilidade de uma amostra de referência de um componente do bloco atual (1002). Em uma modalidade, o componente inclui um componente Y, um componente Cb ou um componente Cr. Em outra modalidade, o componente inclui um componente Luma, ou um componente Croma. O método pode derivar a disponibilidade da amostra de referência verificando a disponibilidade de amostras Y dentro de um bloco Y vizinho, em que o bloco Y vizinho inclui a amostra de referência, ou derivar a disponibilidade da amostra de referência verificando a disponibilidade de amostras Cb dentro de um bloco Cb vizinho, em que o bloco Cb vizinho inclui a amostra de referência; ou derivar a disponibilidade da amostra de referência verificando a disponibilidade de amostras Cr dentro de um bloco Cr vizinho, em que o bloco Cr vizinho inclui a amostra de referência.
[0171] Quando o método determina que existem amostras de referência indisponíveis (sim em 1003), o método inclui a substituição ou preenchimento das amostras de referência indisponíveis usando as amostras de referência disponíveis (1004). Depois disso, o método inclui derivar a predição do bloco com base no modo de intrapredição e as amostras de referência substituídas (1005). Em 1003, quando o método determina que não existem amostras de referência indisponíveis (não em 1003), o método vai para 1005, que inclui derivar a predição do bloco atual com base no modo de intrapredição e as amostras de referência disponíveis. Em 1006, o método inclui reconstruir o bloco atual com base na predição.
[0172] Aqui, observe que as modalidades da presente divulgação descritas abaixo são direcionadas ao processo de derivar o processo de sinal de predição e melhorar o processo de verificação de disponibilidade de amostras de referência. Modalidade 1
[0173] Nesta modalidade, o processo de verificação de disponibilidade é realizado verificando amostras de seu próprio componente.
[0174] Com referência à FIG. 10, para um bloco codificado como modo de intrapredição, para obter o sinal de predição, o método inclui: Etapa 1: obter o modo de intrapredição (1001) o modo de intrapredição é obtido analisando a sintaxe relacionada ao modo de intrapredição em um fluxo de bits. Por exemplo, para um bloco Y, o intra_luma_mpm_flag, intra_luma_mpm_idx ou intra_luma_mpm_remainder devem ser analisados. Para um bloco Cb ou Cr, o sinal intra_chroma_pred_mode deve ser analisado. Depois disso, o modo de intrapredição do bloco atual pode ser derivado usando a sintaxe analisada. Etapa 2: realizar o processo de verificação de disponibilidade de amostras de referência (1002)
[0175] Esta etapa inclui verificar a disponibilidade das amostras de referência do bloco atual.
[0176] Em uma modalidade, quando o bloco é um bloco Y, a disponibilidade das amostras de referência é derivada verificando as amostras de referência do componente Y. Alternativamente, a disponibilidade das amostras de referência é derivada verificando as amostras Y vizinhas, por exemplo, verificando as amostras de limite do bloco Y vizinho.
[0177] Em uma modalidade, quando o bloco é um bloco Cb,
então a disponibilidade das amostras de referência é derivada verificando as amostras de referência do componente Cb. Alternativamente, a disponibilidade das amostras de referência é derivada verificando as amostras Cb vizinhas, por exemplo, verificando as amostras de limite do bloco Cb vizinho.
[0178] Em uma modalidade, quando o bloco é um bloco Cr, então a disponibilidade das amostras de referência é derivada verificando as amostras de referência do componente Cr. Alternativamente, a disponibilidade de amostras de referência é derivada verificando as amostras vizinhas de Cr, por exemplo, verificando as amostras de limite do bloco Cr vizinho. Etapa 3: determinar se existem amostras de referência indisponíveis (1003)
[0179] Em 1003, o método inclui determinar se existem amostras de referência indisponíveis. Quando o método determina que existem amostras de referência indisponíveis, o método então vai para a etapa 4 (1004), caso contrário, o método irá para a etapa 5 (1005). Etapa 4: substituição de amostras de referência (1004)
[0180] Substituição de amostras de referência significa derivar o valor da amostra de amostras de referência indisponíveis usando o valor das amostras de referência disponíveis. Em uma modalidade, as amostras indisponíveis são substituídas por varredura das amostras de referência no sentido horário e usando o valor de amostra disponível mais recente para as indisponíveis. Quanto à parte inferior das amostras de referência à esquerda, se não estiverem disponíveis, são substituídas pelo valor da amostra de referência disponível mais próxima. Etapa 5: derivar o sinal de predição (1005)
[0181] Após obter as amostras de referência e o modo de intrapredição, o sinal de predição pode ser derivado mapeando as amostras de referência para o bloco atual, o método de mapeamento é indicado pelo modo de intrapredição.
[0182] Após derivar o sinal de predição do bloco atual, o sinal reconstruído do bloco atual pode ser derivado adicionando o sinal residual ao sinal de predição derivado (903 da FIG. 9).
[0183] Aqui, observe que, após o bloco atual ser reconstruído, as amostras na área do bloco podem ser marcadas como "disponíveis", como mostrado na FIG. 11. Ou seja, quando um bloco atual é um bloco Y, então todas as amostras Y nas posições cobertas pela área do bloco estão disponíveis, quando um bloco atual é um bloco Cb, então todas as amostras Cb nas posições cobertas pela área do bloco são disponíveis, quando um bloco atual é um bloco Cr, todas as amostras Cr nas posições cobertas pela área do bloco estão disponíveis.
[0184] Um exemplo da especificação dessa seção pode ser apresentado como abaixo: processo de marcação de disponibilidade de amostra de referência as entradas para este processo são: – uma localização de amostra (xTbCmp, yTbCmp) especificando a amostra superior esquerda do bloco de transformada atual em relação à amostra superior esquerda da imagem atual, – uma variável refIdx especificando o índice de linha de referência de intrapredição,
– uma variável refW especificando a largura das amostras de referência, – uma variável refH especificando a altura das amostras de referência, – uma variável cIdx especificando o componente de cor do bloco atual.
[0185] As saídas deste processo são as amostras de referência refUnfilt[x][y] com x = −1 - refIdx, y = −1 - refIdx..refH - 1 e x = −refIdx..refW - 1, y = −1 - refIdx para predição intra amostra.
[0186] As amostras vizinhas refUnfilt[x][y], refW + refH + 1 + (2 * refIdx), que são amostras construídas antes do processo de filtro de repetição, com x = −1 - refIdx, y = −1 - refIdx .. refH - 1 e x = −refIdx..refW - 1, y = −1 - refIdx, são derivadas da seguinte forma: – a localização vizinha (xNbCmp, yNbCmp) é especificada por: (xNbCmp, yNbCmp) = (xTbCmp + x, yTbCmp + y) (310) – o processo de derivação para a disponibilidade do bloco vizinho conforme especificado na cláusula 6.4.4 é invocado com a localização de amostra atual (xCurr, yCurr) definida igual a (xTbCmp, yTbCmp), a localização de amostra vizinha (xNbCmp, yNbCmp), checkPredModeY definida igual a FALSE, e cIdx como entradas, e a saída é atribuída a availableN.
[0187] Cada amostra refUnfilt[x][y] é derivada da seguinte forma: – se availableN for igual a FALSE, a amostra refUnfilt[x][y] é marcada como "não disponível para intrapredição";
– caso contrário, a amostra refUnfilt[x][y] é marcada como "disponível para intrapredição" e a amostra na localização (xNbCmp, yNbCmp) é atribuída a refUnfilt[x][y]. Processo de derivação para disponibilidade de bloco vizinho
[0188] As entradas para este processo são: – a localização de amostra (xCurr, yCurr) da amostra superior esquerda do bloco atual em relação à amostra superior esquerda da imagem atual, – a localização de amostra (xNbCmp, yNbCmp) coberta por um bloco vizinho em relação à amostra luma superior esquerda da imagem atual, – a variável checkPredModeY especificando se a disponibilidade depende do modo de predição, – a variável cIdx especificando o componente de cor do bloco atual.
[0189] A saída desse processo é a disponibilidade do bloco vizinho cobrindo a localização (xNbCmp, yNbCmp), denotado como availableN.
[0190] A localização luma atual (xTbY, yTbY) e a localização luma vizinha (xNbY, yNbY) são derivadas da seguinte forma: (xTbY, yTbY) = (cIdx = = 0) ? (xCurr, yCurr): (xCurr * SubWidthC, yCurr * SubHeightC) (xNbY, yNbY) = (cIdx = = 0) ? (xNbCmp, yNbCmp): (xNbCmp * SubWidthC, yNbCmp * SubHeightC).
[0191] A disponibilidade do bloco vizinho availableN é derivada da seguinte forma:
–se uma ou mais das seguintes condições forem verdadeiras, availableN será definido como FALSE: – xNbCmp é menor que 0; – yNbCmp é menor que 0; – xNbY é maior ou igual a pic_width_in_luma_samples; – yNbY é maior ou igual a pic_height_in_luma_samples; – IsAvailable[cIdx][xNbCmp][yNbCmp] é igual a FALSE; – o bloco vizinho está contido em uma fatia diferente do bloco atual; – o bloco vizinho está contido em um bloquete diferente do bloco atual; – entropy_coding_sync_enabled_flag é igual a 1 e (xNbY >> CtbLog2SizeY) é maior ou igual a (xTbY >> CtbLog2SizeY) + 1; – caso contrário, availableN é igual a TRUE.
[0192] Quando todas as seguintes condições forem verdadeiras, availableN será definido como FALSE: – checkPredModeY é igual a TRUE; – availableN é definido igual a TRUE; – CuPredMode[0][xNbY][yNbY] não é igual a CuPredMode[0][xTbY][yTbY].
[0193] IsAvailable[cIdx][x][y] é usado para armazenar as informações disponíveis das amostras para cada componente cIdx, na posição da amostra (x, y); para cIdx = 0, 0 <= x <= pic_width_in_luma_samples, 0 <= y <= pic_height_in_luma_samples; para cIdx = 1 ou 2. 0 <= x <= pic_width_in_chroma_samples, 0 <= y <= pic_height_in_ chroma _samples;
as entradas para este processo são: – uma localização (xCurr, yCurr) especificando a amostra superior esquerda do bloco atual em relação à amostra superior esquerda do componente de imagem atual, – as variáveis nCurrSw e nCurrSh especificando a largura e altura, respectivamente, do bloco atual, – uma variável cIdx especificando o componente de cor do bloco atual, – uma matriz (nCurrSw) x (nCurrSh) predSamples especificando as amostras preditas do bloco atual, – uma matriz (nCurrSw) x (nCurrSh) resSamples especificando as amostras residuais do bloco atual.
[0194] A saída deste processo é uma matriz de amostra de imagem reconstruída recSamples.
[0195] Dependendo do valor do componente de cor cIdx, as seguintes atribuições são feitas: – se cIdx for igual a 0, recSamples corresponde à matriz de amostra de imagem reconstruída SL; – caso contrário, se cIdx for igual a 1, tuCbfChroma é definido igual a tu_cbf_cb[xCurr][yCurr], recSamples corresponde à matriz de amostra de croma reconstruída SCb; – caso contrário (cIdx é igual a 2), tuCbfChroma é definido igual a tu_cbf_cr[xCurr][yCurr], recSamples corresponde à matriz de amostra de croma reconstruída SCr.
[0196] Dependendo do valor de pic_lmcs_enabled_flag, o seguinte se aplica: – se pic_lmcs_enabled_flag for igual a 0, o bloco (nCurrSw) x (nCurrSh) das amostras reconstruídas recSamples no local (xCurr, yCurr) é derivado da seguinte forma para i = 0..nCurrSw - 1, j = 0..nCurrSh - 1:
recSamples[xCurr + i][yCurr + j] = Clip1 (predSamples[i][j] + resSamples[i][j]) (1195) – caso contrário (pic_lmcs_enabled_flag é igual a 1), aplica-se o seguinte: – se cIdx for igual a 0, o seguinte se aplica: – a reconstrução de imagem com processo de mapeamento para amostras de luma conforme especificado na cláusula 8.7.5.2 é invocada com a localização de luma (xCurr, yCurr), a largura do bloco nCurrSw e a altura nCurrSh, a matriz de amostra luma predita predSamples, e a matriz de amostra luma residual resSamples como entradas, e a saída é a matriz de amostra luma reconstruída recSamples; – caso contrário (cIdx é maior que 0), a reconstrução da imagem com processo de escalonamento residual de croma dependente de luma para amostras de croma, conforme especificado na cláusula 8.7.5.3, é invocada com a localização de croma (xCurr, yCurr), a largura do bloco de transformada nCurrSw e altura nCurrSh, o indicador de bloco codificado do bloco de transformada de croma atual tuCbfChroma, a matriz de amostra de croma predita predSamples, e a matriz de amostra de croma residual resSamples, como entradas, e a saída é a matriz de amostra de croma reconstruída recSamples.
[0197] As seguintes atribuições são feitas para i =
0..nCurrSw - 1, j = 0..nCurrSh - 1: xVb = (xCurr + i) % ((cIdx = = 0) ? IbcBufWidthY: IbcBufWidthC) (1196) yVb = (yCurr + j)% ((cIdx = = 0)? CtbSizeY: (CtbSizeY / subHeightC)) (1197) IbcVirBuf[cIdx][xVb][yVb] = recSamples[xCurr + i][yCurr
+ j] (1198) IsAvailable[cIdx][xCurr + i][yCurr + j] = TRUE (1199).
[0198] Outro exemplo da especificação dessa seção pode ser apresentado como a seguir: processo de marcação de disponibilidade de amostra de referência as entradas para este processo são: – uma localização de amostra (xTbCmp, yTbCmp) especificando a amostra superior esquerda do bloco de transformada atual em relação à amostra superior esquerda da imagem atual, – uma variável refIdx especificando o índice de linha de referência de intrapredição, – uma variável refW especificando a largura das amostras de referência, – uma variável refH especificando a altura das amostras de referência, – uma variável cIdx especificando o componente de cor do bloco atual.
[0199] As saídas deste processo são as amostras de referência refUnfilt[x][y] com x = −1 - refIdx, y = −1 - refIdx..refH - 1 e x = −refIdx..refW - 1, y = −1 - refIdx para predição intra amostra.
[0200] As amostras vizinhas refUnfilt[x][y], refW + refH + 1 + (2 * refIdx), que são amostras construídas antes do processo de filtro de repetição, com x = −1 - refIdx, y = −1 - refIdx .. refH - 1 e x = −refIdx..refW - 1, y = −1 - refIdx, são derivadas da seguinte forma: – a localização vizinha (xNbCmp, yNbCmp) é especificada por:
(xNbCmp, yNbCmp) = (xTbCmp + x, yTbCmp + y) (310) – o processo de derivação para a disponibilidade do bloco vizinho conforme especificado na cláusula 6.4.4 é invocado com a localização de amostra atual (xCurr, yCurr) definida igual a (xTbCmp, yTbCmp), a localização de amostra vizinha (xNbCmp, yNbCmp), checkPredModeY definida igual a FALSE, e cIdx como entradas, e a saída é atribuída a availableN.
[0201] Cada amostra refUnfilt[x][y] é derivada da seguinte forma: – se availableN for igual a FALSE, a amostra refUnfilt[x][y] é marcada como "não disponível para intrapredição"; – caso contrário, a amostra refUnfilt[x][y] é marcada como "disponível para intrapredição" e a amostra na localização (xNbCmp, yNbCmp) é atribuída a refUnfilt[x][y]. Processo de derivação para disponibilidade de bloco vizinho
[0202] As entradas para este processo são: – a localização de amostra (xCurr, yCurr) da amostra superior esquerda do bloco atual em relação à amostra superior esquerda da imagem atual, – a localização de amostra (xNbCmp, yNbCmp) coberta por um bloco vizinho em relação à amostra luma superior esquerda da imagem atual, – a variável checkPredModeY especificando se a disponibilidade depende do modo de predição, – a variável cIdx especificando o componente de cor do bloco atual.
[0203] A saída desse processo é a disponibilidade do bloco vizinho cobrindo a localização (xNbCmp, yNbCmp), denotado como availableN.
[0204] A localização luma atual (xTbY, yTbY) e a localização luma vizinha (xNbY, yNbY) são derivadas da seguinte forma: (xTbY, yTbY) = (cIdx = = 0) ? (xCurr, yCurr): (xCurr * SubWidthC, yCurr * SubHeightC) (XXX) (xNbY, yNbY) = (cIdx = = 0) ? (xNbCmp, yNbCmp): (XXX) (xNbCmp * SubWidthC, yNbCmp * SubHeightC).
[0205] A disponibilidade do bloco vizinho availableN é derivada da seguinte forma: – se uma ou mais das seguintes condições forem verdadeiras, availableN será definido como FALSE: – xNbCmp é menor que 0; – yNbCmp é menor que 0; – xNbY é maior ou igual a pic_width_in_luma_samples; – yNbY é maior ou igual a pic_height_in_luma_samples; – IsAvailable[cIdx][xNbCmp][yNbCmp] é igual a FALSE; – o bloco vizinho está contido em uma fatia diferente do bloco atual; – o bloco vizinho está contido em um bloquete diferente do bloco atual; – entropy_coding_sync_enabled_flag é igual a 1 e (xNbY >> CtbLog2SizeY) é maior ou igual a (xTbY >> CtbLog2SizeY) + 1; – caso contrário, availableN é igual a TRUE.
[0206] Quando todas as seguintes condições forem verdadeiras, availableN será definido como FALSE: – checkPredModeY é igual a TRUE; – availableN é definido igual a TRUE; – CuPredMode[0][xNbY][yNbY] não é igual a CuPredMode[0][xTbY][yTbY]; as entradas para este processo são: – uma localização (xCurr, yCurr) especificando a amostra superior esquerda do bloco atual em relação à amostra superior esquerda do componente de imagem atual, – as variáveis nCurrSw e nCurrSh especificando a largura e altura, respectivamente, do bloco atual, – uma variável cIdx especificando o componente de cor do bloco atual, – uma matriz (nCurrSw) x (nCurrSh) predSamples especificando as amostras preditas do bloco atual, – uma matriz (nCurrSw) x (nCurrSh) resSamples especificando as amostras residuais do bloco atual.
[0207] A saída deste processo é uma matriz de amostra de imagem reconstruída recSamples.
[0208] Dependendo do valor do componente de cor cIdx, as seguintes atribuições são feitas: – se cIdx for igual a 0, recSamples corresponde à matriz de amostra de imagem reconstruída SL; – caso contrário, se cIdx for igual a 1, tuCbfChroma é definido igual a tu_cbf_cb[xCurr][yCurr], recSamples corresponde à matriz de amostra de croma reconstruída SCb; – caso contrário (cIdx é igual a 2), tuCbfChroma é definido igual a tu_cbf_cr[xCurr][yCurr], recSamples corresponde à matriz de amostra de croma reconstruída SCr.
[0209] Dependendo do valor de pic_lmcs_enabled_flag, o seguinte se aplica: – se pic_lmcs_enabled_flag for igual a 0, o bloco (nCurrSw) x (nCurrSh) das amostras reconstruídas recSamples no local (xCurr, yCurr) é derivado da seguinte forma para i = 0..nCurrSw - 1, j = 0..nCurrSh - 1 : recSamples[xCurr + i][yCurr + j] = Clip1 (predSamples[i][j] + resSamples[i][j]) (1195) – caso contrário (pic_lmcs_enabled_flag é igual a 1), aplica-se o seguinte: – se cIdx for igual a 0, o seguinte se aplica: – a reconstrução de imagem com processo de mapeamento para amostras de luma conforme especificado na cláusula 8.7.5.2 é invocada com a localização de luma (xCurr, yCurr), a largura do bloco nCurrSw e a altura nCurrSh, a matriz de amostra luma predita predSamples, e a matriz de amostra luma residual resSamples como entradas, e a saída é a matriz de amostra luma reconstruída recSamples; – caso contrário (cIdx é maior que 0), a reconstrução da imagem com processo de escalonamento residual de croma dependente de luma para amostras de croma, conforme especificado na cláusula 8.7.5.3, é invocada com a localização de croma (xCurr, yCurr), a largura do bloco de transformada nCurrSw e altura nCurrSh, o indicador de bloco codificado do bloco de transformada de croma atual tuCbfChroma, a matriz de amostra de croma predita predSamples, e a matriz de amostra de croma residual resSamples, como entradas, e a saída é a matriz de amostra de croma reconstruída recSamples.
[0210] As seguintes atribuições são feitas para i =
0..nCurrSw - 1, j = 0..nCurrSh - 1:
xVb = (xCurr + i) % ((cIdx = = 0) ? IbcBufWidthY: IbcBufWidthC) (1196) yVb = (yCurr + j)% ((cIdx = = 0)? CtbSizeY: (CtbSizeY / subHeightC)) (1197) IbcVirBuf[cIdx][xVb][yVb] = recSamples[xCurr + i][yCurr + j] (1198) IsAvailable[cIdx][(xCurr + i) * ((cIdx = = 0)? 1: SubWidthC)][(yCurr + j) * ((cIdx = = 0)? 1: SubHeightC)] = TRUE (1199).
[0211] FIG. 12 é um diagrama gráfico que ilustra amostras em um bloco atual que são marcadas como disponíveis na unidade N x N de acordo com uma modalidade exemplar da presente divulgação. Em uma modalidade, referindo-se à FIG. 12, após o bloco atual ser reconstruído, as amostras são marcadas como "disponíveis" em uma unidade com tamanho N * N, como N = 4 ou N = 2. Alternativamente, para o bloco de componente Y, N = 4, e para o bloco de componente Cb / Cr, N = 2. Qualquer amostra em uma unidade “disponível” é considerada como “disponível”. O que significa que, se uma unidade for marcada como “disponível”, qualquer amostra na área de unidade pode ser marcada como “disponível”. Ou seja, quando uma unidade atual é uma unidade Y, então todas as amostras Y nas posições cobertas pela área de unidade estão disponíveis, quando uma unidade atual é uma unidade Cb, então todas as amostras Cb nas posições cobertas pela área de unidade estão disponíveis, quando um bloco atual é uma unidade Cr, então todas as amostras Cr nas posições cobertas pela área de unidade estão disponíveis.
[0212] Em uma modalidade, para verificar se uma amostra de referência está disponível, o processo primeiro obtém a posição ou índice da unidade à qual a amostra pertence, quando a unidade é determinada como "disponível", então a amostra de referência é considerada ou marcada como disponível.
[0213] FIG. 13 é um diagrama gráfico que ilustra amostras no limite direito e limite inferior de um bloco atual que são marcadas como disponíveis de acordo com uma modalidade exemplar da presente divulgação. Em uma modalidade, referindo-se à FIG. 13, após o bloco atual ser reconstruído, apenas as amostras de limite direito e as amostras de limite inferior (as quais serão usadas como amostras de referência de outros blocos) são marcadas como "disponíveis".
[0214] FIG. 14 é um diagrama gráfico que ilustra amostras no limite direito e limite inferior de um bloco atual que são marcadas como disponíveis na unidade N de acordo com uma modalidade exemplar da presente divulgação. Em uma modalidade, referindo-se à FIG. 14, após o bloco atual ser reconstruído, apenas as amostras de limite direito e as amostras de limite inferior (as quais serão usadas como amostras de referência de outros blocos) são marcadas como "disponíveis", e em um tamanho de unidade com N, como N = 4 ou N = 2. Alternativamente, para um bloco de componente Y, N = 4, e para um bloco de componente Cb / Cr, N = 2. Qualquer amostra em uma unidade “disponível” é considerada como “disponível”. O que significa que, se uma unidade for marcada como “disponível”, qualquer amostra na área de unidade pode ser marcada como “disponível”. Em outras palavras, quando uma unidade atual é uma unidade Y, então todas as amostras Y nas posições cobertas pela área de unidade estão disponíveis, quando uma unidade atual é uma unidade Cb, então todas as amostras Cb nas posições cobertas pela área de unidade estão disponíveis, e quando um bloco atual é uma unidade Cr, então todas as amostras Cr nas posições cobertas pela área de unidade estão disponíveis.
[0215] Para verificar se uma amostra de referência está disponível, em uma modalidade, o processo primeiro obtém a posição ou índice da unidade à qual a amostra pertence, quando a unidade é determinada como "disponível", então a amostra de referência é marcada como disponível.
[0216] FIG. 15 é um diagrama gráfico que ilustra amostras no limite direito e limite inferior de um bloco atual que são marcadas como disponíveis na unidade N x N de acordo com uma modalidade exemplar da presente divulgação. Em uma modalidade, referindo-se à FIG. 15, após o bloco atual ser reconstruído, apenas as amostras de limite direito e as amostras de limite inferior (as quais serão usadas como amostras de referência de outros blocos) são marcadas como "disponíveis", e em uma unidade com tamanho N * N, como, N = 4 ou N = 2. Alternativamente, para um bloco de componente Y, N = 4, e para um bloco de componente Cb / Cr, N = 2. Qualquer amostra em uma unidade “disponível” é considerada como “disponível”. O que significa que, quando uma unidade é marcada como “disponível”, qualquer amostra na área de unidade pode ser marcada como “disponível”. Ou seja, quando uma unidade atual é uma unidade Y, então todas as amostras Y nas posições cobertas pela área de unidade estão disponíveis, quando uma unidade atual é uma unidade Cb, então todas as amostras Cb nas posições cobertas pela área de unidade estão disponíveis, quando um bloco atual é uma unidade Cr, então todas as amostras Cr nas posições cobertas pela área de unidade estão disponíveis.
[0217] Para verificar se uma amostra de referência está disponível, em uma modalidade, o processo ou método primeiro obtém a posição ou índice da unidade à qual a amostra pertence, quando o processo ou método determina que a unidade está "disponível", então o processo marca a amostra de referência como disponível.
[0218] Aqui, observe que, de acordo com as modalidades da presente divulgação, as amostras ou informações "disponíveis" da unidade são salvas em uma memória para cada componente (3 componentes no total), tal como, para o componente Y, para o componente Cb, e para o Componente Cr.
[0219] Aqui, observe que, mesmo quando um bloco é codificado como um modo de interpredição, após o bloco ser reconstruído, o método de marcação “disponível” também pode ser aplicado. Modalidade 2
[0220] Nesta modalidade, o processo de verificação de disponibilidade é realizado verificando amostras de seu componente correspondente.
[0221] A diferença entre a modalidade 2 e a modalidade 1 é que o componente Cb e o componente Cr não são distinguidos no processo de verificação de disponibilidade. Para um bloco, o processo de verificação de disponibilidade de amostras de referência é feito verificando amostras de seu componente correspondente. Aqui, o componente pode ser o componente Luma, ou o componente Croma. O componente Y é conhecido como componente luma. Tanto o componente Cb quanto o componente Cr são chamados de componente croma.
[0222] A diferença entre a modalidade 2 e a modalidade
1 ocorre apenas na etapa 2, enquanto para as outras etapas, elas são iguais às da modalidade 1. A etapa 2 da modalidade 2 é descrita em detalhes abaixo.
[0223] Etapa 2: realizar o processo de verificação de disponibilidade de amostras de referência, que inclui a verificação da disponibilidade das amostras de referência do bloco atual (1002 na FIG. 10).
[0224] Em uma modalidade, quando o bloco é um bloco Luma, então a disponibilidade das amostras de referência é derivada verificando as amostras Luma de referência.
[0225] Em uma modalidade, quando o bloco é um bloco Croma, então a disponibilidade das amostras de referência é derivada verificando as amostras Croma de referência.
[0226] Com referência à FIG. 10, depois de verificar a disponibilidade das amostras de referência em 1002, o método inclui determinar se existem amostras de referência indisponíveis em 1003. Quando o método determina que há amostras de referência indisponíveis (sim em 1003), o método vai para 1004, caso contrário, o método vai para 1005.
[0227] Aqui, observe que, o método de marcação discutido na modalidade 1 pode ser estendido para a modalidade 2 diretamente, a única diferença é para o componente de croma, somente após o bloco de componente Cb e o bloco de componente Cr serem reconstruídos, as amostras de croma na área do bloco podem ser marcadas como “disponível”.
[0228] Por exemplo, para um bloco Luma, quando o bloco é reconstruído, as amostras na área do bloco podem ser marcadas como “disponíveis”. Para um bloco de croma, depois que os blocos Cb e Cr são reconstruídos, as amostras na área do bloco podem ser marcadas como “disponíveis”. O que significa que, quando um bloco atual é um bloco Luma, todas as amostras Luma nas posições cobertas pela área do bloco são marcadas como disponíveis. Quando um bloco atual é um bloco Croma, depois que os blocos Cb e Cr são reconstruídos, todas as amostras Croma nas posições cobertas pela área do bloco são marcadas como disponíveis.
[0229] Outros métodos de marcação na modalidade 1 também podem ser estendidos de forma semelhante.
[0230] Aqui, observe que, nas modalidades da presente divulgação, as amostras ou informações de "disponibilidade" da unidade são salvas em uma memória para cada componente (2 componentes no total), como para o componente Luma e para o componente Croma. O que significa que o componente Cb e o componente Cr compartilharão a mesma informação de “disponibilidade” ou “disponível”.
[0231] Aqui, observe que, mesmo quando um bloco é codificado como um modo de interpredição, após o bloco ser reconstruído, o método de marcação “disponível” também pode ser aplicado.
[0232] A seguir está uma explicação das aplicações do método de codificação, assim como do método de decodificação, conforme mostrado nas modalidades mencionadas acima, e um sistema que os usa.
[0233] A FIG.17 é um diagrama de blocos que mostra um sistema de fornecimento de conteúdo 3100 para realizar o serviço de distribuição de conteúdo. Este sistema de fornecimento de conteúdo 3100 inclui dispositivo de captura 3102, dispositivo terminal 3106 e, opcionalmente, inclui tela de exibição 3126. O dispositivo de captura 3102 se comunica com o dispositivo terminal 3106 através do enlace de comunicação 3104. O enlace de comunicação pode incluir o canal de comunicação 13 descrito acima. O enlace de comunicação 3104 inclui, mas não se limita a, WIFI, Ethernet, cabo, sem fio (3G / 4G / 5G), USB, ou qualquer tipo de combinação dos mesmos, ou semelhantes.
[0234] O dispositivo de captura 3102 gera dados, e pode codificar os dados pelo método de codificação como mostrado nas modalidades acima. Alternativamente, o dispositivo de captura 3102 pode distribuir os dados para um servidor de streaming (não mostrado nas Figuras), e o servidor codifica os dados e transmite os dados codificados para o dispositivo terminal 3106. O dispositivo de captura 3102 inclui, mas não se limita a, câmera, smartphone ou pad, computador ou laptop, sistema de videoconferência, PDA, dispositivo montado em veículo ou uma combinação de qualquer um deles, ou semelhantes. Por exemplo, o dispositivo de captura 3102 pode incluir o dispositivo de origem 12, conforme descrito acima. Quando os dados incluem vídeo, o codificador de vídeo 20 incluído no dispositivo de captura 3102 pode realmente realizar o processamento de codificação de vídeo. Quando os dados incluem áudio (ou seja, voz), um codificador de áudio incluído no dispositivo de captura 3102 pode realmente realizar o processamento de codificação de áudio. Para alguns cenários práticos, o dispositivo de captura 3102 distribui os dados de vídeo e áudio codificados multiplexando-os juntos. Para outros cenários práticos, por exemplo no sistema de videoconferência, os dados de áudio codificados e os dados de vídeo codificados não são multiplexados. O dispositivo de captura 3102 distribui os dados de áudio codificados e os dados de vídeo codificados para o dispositivo terminal 3106 separadamente.
[0235] No sistema de fornecimento de conteúdo 3100, o dispositivo terminal 310 recebe e reproduz os dados codificados. O dispositivo terminal 3106 pode ser um dispositivo com capacidade de recebimento e recuperação de dados, como smartphone ou pad 3108, computador ou laptop 3110, gravador de vídeo em rede (NVR) / gravador de vídeo digital (DVR) 3112, TV 3114, decodificador (STB) 3116, sistema de videoconferência 3118, sistema de videovigilância 3120, assistente digital pessoal (PDA) 3122, dispositivo montado em veículo 3124, ou uma combinação de qualquer um deles, ou semelhantes, capaz de decodificar os dados codificados acima mencionados. Por exemplo, o dispositivo terminal 3106 pode incluir o dispositivo de destino 14, conforme descrito acima. Quando os dados codificados incluem vídeo, o decodificador de vídeo 30 incluído no dispositivo terminal é priorizado para realizar a decodificação de vídeo. Quando os dados codificados incluem áudio, um decodificador de áudio incluído no dispositivo terminal é priorizado para realizar o processamento de decodificação de áudio.
[0236] Para um dispositivo terminal com sua tela de exibição, por exemplo, smartphone ou pad 3108, computador ou laptop 3110, gravador de vídeo em rede (NVR) / gravador de vídeo digital (DVR) 3112, TV 3114, assistente digital pessoal (PDA) 3122 ou dispositivo montado em veículo 3124, o dispositivo terminal pode alimentar os dados decodificados para sua tela de exibição. Para um dispositivo terminal equipado com nenhuma tela de exibição, por exemplo, STB 3116, sistema de videoconferência 3118 ou sistema de vigilância por vídeo 3120, uma tela de exibição externa 3126 é conectada nele para receber e mostrar os dados decodificados.
[0237] Quando cada dispositivo neste sistema realiza codificação ou decodificação, o dispositivo de codificação de imagem ou o dispositivo de decodificação de imagem, como mostrado nas modalidades mencionadas acima, podem ser usados.
[0238] FIG. 18 é um diagrama que mostra uma estrutura de um exemplo do dispositivo terminal 3106. Após o dispositivo terminal 3106 receber fluxo do dispositivo de captura 3102, a unidade de processamento de protocolo 3202 analisa o protocolo de transmissão do fluxo. O protocolo inclui, mas não se limita a, Protocolo de Streaming em Tempo Real(RTSP), Protocolo de Transferência de Hipertexto (HTTP), Protocolo de streaming ao vivo em HTTP (HLS), MPEG-DASH, Protocolo de Transporte em Tempo Real (RTP), Protocolo de Mensagem em Tempo Real (RTMP) , ou qualquer tipo de combinação dos mesmos, ou semelhantes.
[0239] Após a unidade de procedimento de protocolo 3202 processar o fluxo, o arquivo de fluxo é gerado. O arquivo é enviado para uma unidade de demultiplexação 3204. A unidade de demultiplexação 3204 pode separar os dados multiplexados nos dados de áudio codificados e nos dados de vídeo codificados. Conforme descrito acima, para alguns cenários práticos, por exemplo, no sistema de videoconferência, os dados de áudio codificados e os dados de vídeo codificados não são multiplexados. Nesta situação, os dados codificados são transmitidos para o decodificador de vídeo 3206 e decodificador de áudio 3208 sem ser através da unidade de demultiplexação 3204.
[0240] Através do processamento de demultiplexação, o fluxo elementar de vídeo (ES), o ES de áudio e, opcionalmente, o subtítulo são gerados. O decodificador de vídeo 3206, que inclui o decodificador de vídeo 30 como explicado nas modalidades mencionadas acima, decodifica o ES de vídeo pelo método de decodificação como mostrado nas modalidades mencionadas acima para gerar quadro de vídeo, e alimenta esses dados para a unidade síncrona 3212. O decodificador de áudio 3208 decodifica o ES de áudio para gerar quadro de áudio, e alimenta esses dados para a unidade síncrona 3212. Alternativamente, o quadro de vídeo pode ser armazenado em um armazenamento temporário (não mostrado na FIG. 18) antes de alimentá-lo para a unidade síncrona 3212. Da mesma forma, o quadro de áudio pode ser armazenado em um armazenamento temporário (não mostrado na FIG. 18) antes de alimentá-lo para a unidade síncrona 3212.
[0241] A unidade síncrona 3212 sincroniza o quadro de vídeo e o quadro de áudio, e fornece o vídeo / áudio para uma tela de exibição de vídeo / áudio 3214. Por exemplo, a unidade síncrona 3212 sincroniza a apresentação das informações de vídeo e áudio. As informações podem codificar na sintaxe usando carimbos de tempo relativos à apresentação de dados de áudio e visuais codificados e carimbos de tempo relativos à entrega do próprio fluxo de dados.
[0242] Se o subtítulo for incluído no fluxo, o decodificador de subtítulo 3210 decodifica o subtítulo, e o sincroniza com o quadro de vídeo e o quadro de áudio, e fornece o vídeo / áudio / subtítulo para uma tela de exibição de vídeo / áudio / subtítulo 3216.
[0243] A presente invenção não está limitada ao sistema acima mencionado, e tanto o dispositivo de codificação de imagem quanto o dispositivo de decodificação de imagem nas modalidades acima mencionadas podem ser incorporados em outro sistema, por exemplo, um sistema de carro.
[0244] De acordo com a presente divulgação, os métodos e processos descritos podem ser implementados em hardware, software, firmware, ou qualquer combinação dos mesmos. Quando implementados em software, os métodos ou processos podem ser realizados por instruções ou código de programa que são armazenados em um meio legível por computador e executados por uma unidade de processamento de hardware.
[0245] Uma vez que o método proposto armazena as informações disponíveis para cada amostra em cada componente, ele pode fornecer as informações disponíveis com mais precisão no processo de intrapredição.
[0246] A título de exemplo, e não como limitação, um meio de armazenamento legível por computador pode incluir RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco óptico, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, memória flash, ou qualquer outro meio que pode ser usado para armazenar o código do programa desejado na forma de instruções ou estruturas de dados e que pode ser acessado por um computador. Além disso, qualquer conexão é apropriadamente denominada meio legível por computador. Por exemplo, se as instruções são transmitidas de um website, servidor ou outra origem remota usando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio, como infravermelho, rádio e micro-ondas, então o cabo coaxial, cabo de fibra óptica, par trançado, DSL, ou tecnologias sem fio, como infravermelho, rádio e micro-
ondas, estão incluídos na definição de meio. Deve ser entendido, no entanto, que os meios de armazenamento legíveis por computador e os meios de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios transitórios, mas são direcionados para meios de armazenamento tangíveis não transitórios. Disco (Disk) e disco (disc), conforme usado aqui, inclui disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disquete, e disco Blu-ray, onde os discos (disks) geralmente reproduzem dados magneticamente, enquanto os discos (discs) reproduzem dados opticamente com lasers. As combinações dos itens acima também devem ser incluídas no escopo do meio legível por computador.
[0247] Instruções ou código de programa podem ser executados por um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores de uso geral, circuitos integrados de aplicação específica (ASICs), matrizes lógicas programáveis de campo (FPGAs), ou outro equivalente integrado ou circuitos lógicos discretos. Consequentemente, o termo "processador", conforme usado neste documento, pode se referir a qualquer uma das estruturas anteriores ou qualquer outra estrutura adequada para a implementação das técnicas descritas neste documento. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida em módulos de hardware e / ou software dedicados configurados para codificação e decodificação ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0248] As técnicas desta divulgação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho portátil sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta divulgação para enfatizar os aspectos funcionais dos dispositivos configurados para realizar as técnicas divulgadas, mas não necessariamente requerem a realização por diferentes unidades de hardware. Em vez disso, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores conforme descrito acima, em conjunto com software e / ou firmware adequados.
[0249] Embora várias modalidades tenham sido fornecidas na presente divulgação, deve ser entendido que os sistemas e métodos divulgados podem ser incorporados em muitas outras formas específicas sem se afastar do espírito ou escopo da presente divulgação. Os presentes exemplos devem ser considerados ilustrativos e não restritivos, e a intenção não deve ser limitada aos detalhes aqui fornecidos. Por exemplo, os vários elementos ou componentes podem ser combinados ou integrados em outro sistema ou certos recursos podem ser omitidos ou não implementados.
[0250] Além disso, técnicas, sistemas, subsistemas e métodos descritos e ilustrados nas várias modalidades como discretos ou separados podem ser combinados ou integrados com outros sistemas, módulos, técnicas ou métodos sem se afastar do escopo da presente divulgação. Outros itens mostrados ou discutidos como acoplados ou diretamente acoplados ou se comunicando entre si podem ser indiretamente acoplados ou se comunicar através de alguma interface, dispositivo ou componente intermediário, seja eletricamente, mecanicamente, ou de outra forma.
Outros exemplos de mudanças, substituições e alterações são verificáveis por uma pessoa versada na técnica e podem ser feitos sem se afastar do espírito e do escopo divulgados neste documento.

Claims (30)

REIVINDICAÇÕES EMENDADAS
1. Aparelho para intrapredição de imagem, caracterizado pelo fato de que compreende: um armazenamento de memória compreendendo instruções; e um ou mais processadores em comunicação com a memória, em que um ou mais processadores executam as instruções para: obter um modo de intrapredição de um bloco atual; derivar a disponibilidade de uma amostra de referência de um componente do bloco atual, em que o componente compreende um componente Cb ou um componente Cr; substituir amostras de referência indisponíveis usando amostras de referência disponíveis; derivar uma predição do bloco atual com base no modo de intrapredição e as amostras de referência substituídas; e reconstruir o bloco atual com base na predição.
2. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que um ou mais processadores executam as instruções para: derivar a disponibilidade da amostra de referência verificando a disponibilidade de amostras Cb dentro de um bloco Cb vizinho, em que o bloco Cb vizinho inclui a amostra de referência; ou derivar a disponibilidade da amostra de referência verificando a disponibilidade de amostras Cr dentro de um bloco Cr vizinho, em que o bloco Cr vizinho inclui a amostra de referência.
3. Aparelho, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que todas as amostras Cb no bloco reconstruído são marcadas como disponíveis; ou todas as amostras Cr no bloco reconstruído são marcadas como disponíveis.
4. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que um ou mais processadores executam as instruções para: derivar a predição do bloco atual mapeando as amostras de referência substituídas para o bloco atual com base no modo de intrapredição; reconstruir o bloco atual adicionando um residual à predição do bloco atual; e marcar todas as amostras no bloco reconstruído como disponíveis após reconstruir o bloco atual.
5. Aparelho, de acordo com a reivindicação 4, caracterizado pelo fato de que uma área de bloco compreende um número de unidades, cada uma tendo uma área de unidade, todas as amostras na área de unidade são marcadas como disponíveis.
6. Aparelho, de acordo com a reivindicação 5, caracterizado pelo fato de que: quando a unidade atual é uma unidade Cb, todas as amostras Cb nas posições cobertas pela área de unidade são marcadas como disponíveis; ou quando a unidade atual é uma unidade Cr, todas as amostras Cr nas posições cobertas pela área de unidade são marcadas como disponíveis.
7. Aparelho, de acordo com qualquer uma das reivindicações 1 a 6, caracterizado pelo fato de que a disponibilidade de amostras de referência é salva para cada componente.
8. Aparelho para intrapredição de imagem, caracterizado pelo fato de que compreende:
um armazenamento de memória compreendendo instruções; e um ou mais processadores em comunicação com a memória, em que um ou mais processadores executam as instruções para: obter um modo de intrapredição de um bloco atual; derivar a disponibilidade de uma amostra de referência de um componente do bloco atual, em que o componente compreende um componente Croma; substituir amostras de referência indisponíveis usando amostras de referência disponíveis; derivar uma predição de Croma do bloco atual com base no modo de intrapredição e as amostras de referência substituídas; e reconstruir o bloco atual com base na predição.
9. Aparelho, de acordo com a reivindicação 8, caracterizado pelo fato de que um componente Cb e um componente Cr formam o componente croma, e o componente Cb e o componente Cr compartilham a mesma informação de disponibilidade.
10. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que todas as amostras de Croma no bloco reconstruído são marcadas como disponíveis.
11. Método para intrapredição de imagem realizado por um codificador ou decodificador, caracterizado pelo fato de que compreende: obter um modo de intrapredição de um bloco atual; derivar a disponibilidade de uma amostra de referência de um componente do bloco atual, em que o componente compreende um componente Cb, ou um componente Cr; substituir amostras de referência indisponíveis usando amostras de referência disponíveis;
derivar uma predição do bloco atual com base no modo de intrapredição e as amostras de referência substituídas; e reconstruir o bloco atual com base na predição.
12. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que: derivar a disponibilidade da amostra de referência verificando a disponibilidade de amostras Cb dentro de um bloco Cb vizinho, em que o bloco Cb vizinho inclui a amostra de referência; ou derivar a disponibilidade da amostra de referência verificando a disponibilidade de amostras Cr dentro de um bloco Cr vizinho, em que o bloco Cr vizinho inclui a amostra de referência.
13. Método, de acordo com a reivindicação 11 ou 12, caracterizado pelo fato de que todas as amostras Cb no bloco reconstruído são marcadas como disponíveis; ou todas as amostras Cr no bloco reconstruído são marcadas como disponíveis.
14. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que o método compreende ainda: derivar a predição do bloco atual mapeando as amostras de referência substituídas para o bloco atual com base no modo de intrapredição; reconstruir o bloco atual adicionando um residual à predição do bloco atual; e marcar todas as amostras no bloco reconstruído como disponíveis após reconstruir o bloco atual.
15. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que uma área de bloco compreende um número de unidades, cada uma tendo uma área de unidade,
todas as amostras na área de unidade são marcadas como disponíveis.
16. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que: quando a unidade atual é uma unidade Cb, todas as amostras Cb nas posições cobertas pela área de unidade são marcadas como disponíveis; ou quando a unidade atual é uma unidade Cr, todas as amostras Cr nas posições cobertas pela área de unidade são marcadas como disponíveis.
17. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que as amostras em um limite direito e um limite inferior do bloco reconstruído são marcadas como disponíveis.
18. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que apenas as amostras do limite direito e as amostras do limite inferior são marcadas como disponíveis na unidade N * 1 ou 1 * N.
19. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que apenas as amostras do limite direito e as amostras do limite inferior são marcadas como disponíveis na unidade N * N.
20. Método, de acordo com qualquer uma das reivindicações 11 a 19, caracterizado pelo fato de que a disponibilidade de amostras de referência é salva para cada componente.
21. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que as amostras de referência de disponibilidade são determinadas pela obtenção de posições ou índices de unidades às quais as amostras de referência pertencem; quando uma unidade é determinada como disponível,
uma amostra de referência associada a essa unidade é determinada como disponível.
22. Método para intrapredição de imagem realizado por um codificador ou decodificador, caracterizado pelo fato de que compreende: obter um modo de intrapredição de um bloco atual; derivar a disponibilidade de uma amostra de referência de um componente do bloco atual, em que o componente compreende um componente Croma; substituir amostras de referência indisponíveis usando amostras de referência disponíveis; derivar uma predição Croma do bloco atual com base no modo de intrapredição e as amostras de referência substituídas; e reconstruir o bloco atual com base na predição.
23. Método, de acordo com a reivindicação 22, caracterizado pelo fato de que um componente Cb e um componente Cr formam o componente croma, e o componente Cb e o componente Cr compartilham a mesma informação de disponibilidade.
24. Método, de acordo com a reivindicação 22 ou 23, caracterizado pelo fato de que todas as amostras de Croma no bloco reconstruído são marcadas como disponíveis.
25. Método, de acordo com a reivindicação 22, caracterizado pelo fato de que, após a reconstrução de uma unidade no bloco atual, todas as amostras em uma área de unidade da unidade são marcadas como disponíveis.
26. Método, de acordo com a reivindicação 22, caracterizado pelo fato de que, após reconstruir o bloco atual, as amostras em um limite direito e um limite inferior do bloco atual são marcados como disponíveis.
27. Método, de acordo com a reivindicação 22, caracterizado pelo fato de que, após reconstruir o bloco atual, apenas as amostras de limite direito e amostras de limite inferior são marcadas como disponíveis na unidade N * 1 ou 1 * N.
28. Método, de acordo com a reivindicação 22, caracterizado pelo fato de que, após reconstruir o bloco atual, apenas as amostras de limite direito e amostras de limite inferior são marcadas como disponíveis na unidade N * N.
29. Método, de acordo com qualquer uma das reivindicações 22 a 28, caracterizado pelo fato de que derivar a disponibilidade da amostra de referência compreende: obter a posição ou índice da unidade à qual a amostra pertence, se a unidade estiver disponível, então a amostra de referência está disponível.
30. Meio de armazenamento legível por computador não transitório compreendendo instruções, caracterizado pelo fato de que as instruções, quando lidas por um computador, fazem com que o computador realize o método conforme definido em qualquer uma das reivindicações 11 a 29.
BR112021009686-8A 2018-11-21 2019-11-21 Método e dispositivo de intrapredição BR112021009686A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862770736P 2018-11-21 2018-11-21
US62/770,736 2018-11-21
PCT/CN2019/119921 WO2020103901A1 (en) 2018-11-21 2019-11-21 Intra prediction method and device

Publications (1)

Publication Number Publication Date
BR112021009686A2 true BR112021009686A2 (pt) 2021-08-31

Family

ID=70774279

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021009686-8A BR112021009686A2 (pt) 2018-11-21 2019-11-21 Método e dispositivo de intrapredição

Country Status (9)

Country Link
US (1) US20210274198A1 (pt)
EP (1) EP3868099A4 (pt)
JP (2) JP7234365B2 (pt)
KR (1) KR20210074400A (pt)
CN (1) CN112913243A (pt)
BR (1) BR112021009686A2 (pt)
MX (1) MX2021005901A (pt)
SG (1) SG11202105014WA (pt)
WO (1) WO2020103901A1 (pt)

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4677483A (en) * 1985-09-27 1987-06-30 Rca Corporation Interpolation filter with motion compensation
US8872856B1 (en) * 2008-08-14 2014-10-28 Zenverge, Inc. Macroblock based scaling of images using reduced memory bandwidth
CN107181950B (zh) * 2010-12-08 2020-11-06 Lg 电子株式会社 一种执行内预测的编码装置和解码装置
KR20130058524A (ko) * 2011-11-25 2013-06-04 오수미 색차 인트라 예측 블록 생성 방법
KR20130105554A (ko) * 2012-03-16 2013-09-25 한국전자통신연구원 다계층 영상을 위한 인트라 예측 방법 및 이를 이용하는 장치
US9357211B2 (en) * 2012-12-28 2016-05-31 Qualcomm Incorporated Device and method for scalable and multiview/3D coding of video information
WO2016115981A1 (en) * 2015-01-22 2016-07-28 Mediatek Singapore Pte. Ltd. Method of video coding for chroma components
WO2017008255A1 (en) * 2015-07-14 2017-01-19 Mediatek Singapore Pte. Ltd. Advanced intra prediction mode signaling in video coding
US20170150156A1 (en) * 2015-11-25 2017-05-25 Qualcomm Incorporated Illumination compensation with non-square predictive blocks in video coding
ES2699723B2 (es) * 2016-06-24 2020-10-16 Kt Corp Metodo y aparato para tratar una senal de video
US11503315B2 (en) * 2016-08-19 2022-11-15 Lg Electronics Inc. Method and apparatus for encoding and decoding video signal using intra prediction filtering
US10812796B2 (en) * 2016-09-30 2020-10-20 Lg Electronics Inc. Image decoding method and apparatus in image coding system
US20180199062A1 (en) * 2017-01-11 2018-07-12 Qualcomm Incorporated Intra prediction techniques for video coding
JP7122838B2 (ja) * 2017-03-10 2022-08-22 日本放送協会 符号化装置、復号装置及びプログラム
US11570470B2 (en) * 2017-09-28 2023-01-31 Vid Scale, Inc. Complexity reduction of overlapped block motion compensation
US10687083B2 (en) * 2018-06-06 2020-06-16 Intel Corporation Loop restoration filtering for super resolution video coding

Also Published As

Publication number Publication date
US20210274198A1 (en) 2021-09-02
EP3868099A1 (en) 2021-08-25
JP2022509626A (ja) 2022-01-21
MX2021005901A (es) 2021-06-23
JP2023067896A (ja) 2023-05-16
WO2020103901A1 (en) 2020-05-28
SG11202105014WA (en) 2021-06-29
EP3868099A4 (en) 2021-12-22
JP7562727B2 (ja) 2024-10-07
JP7234365B2 (ja) 2023-03-07
KR20210074400A (ko) 2021-06-21
CN112913243A (zh) 2021-06-04

Similar Documents

Publication Publication Date Title
CN112789863B (zh) 帧内预测方法及设备
ES2973667T3 (es) Un codificador de video, un decodificador de video y métodos correspondientes
ES2874848T3 (es) Restricción de unidades de predicción en segmentos b a interpredicción unidireccional
BR112021000694A2 (pt) Codificador de vídeo, decodificador de vídeo, e métodos de codificação e decodificação correspondentes
BR112020026818A2 (pt) codificador, decodificador e métodos correspondentes de derivação de resistência de limite de filtro de desbloqueio
BR112016015453B1 (pt) Suporte de camada base de codec diferente em codificação de vídeo de várias camadas
BR112021004800A2 (pt) aparelho e método para refinamento de vetor de movimento de lado de decodificador condicional em condificação de vídeo
BR112021001991A2 (pt) método de predição de bloco de croma e dispositivo
BR112021003999A2 (pt) relação entre elementos de restrição de partição
BR122022009445A2 (pt) Codificador, decodificador e métodos correspondentes para simplificar sinalização de cabeçalho de imagem
BR122022009674A2 (pt) Método implementado por um codificador, dispositivo e aparelho de codificação, sistema e meio para codificação
BR112021003946A2 (pt) codificador de vídeo, decodificador de vídeo e métodos correspondentes
BR112021009099A2 (pt) codificador de vídeo, decodificador de vídeo e métodos de codificação ou decodificação de uma imagem
WO2020182196A1 (en) Coding method, device, system with shared mpm list
BR112021009686A2 (pt) Método e dispositivo de intrapredição
BR122024001393A2 (pt) Codificador, decodificador e métodos correspondentes para sinalização de subimagem em conjunto de parâmetros de sequência
BR112020025145B1 (pt) Filtro de desblocagem para fronteiras de subpartição causadas por ferramenta de codificação de subpartição intra
BR112020025145A2 (pt) filtro de desbloqueio para fronteiras de subpartição causadas por ferramenta de codificação de subpartição intra