BR112021010416A2 - Codificador, decodificador e métodos correspondentes para realizar desblocagem de croma para blocos que usam codificação de croma em conjunto - Google Patents

Codificador, decodificador e métodos correspondentes para realizar desblocagem de croma para blocos que usam codificação de croma em conjunto Download PDF

Info

Publication number
BR112021010416A2
BR112021010416A2 BR112021010416-0A BR112021010416A BR112021010416A2 BR 112021010416 A2 BR112021010416 A2 BR 112021010416A2 BR 112021010416 A BR112021010416 A BR 112021010416A BR 112021010416 A2 BR112021010416 A2 BR 112021010416A2
Authority
BR
Brazil
Prior art keywords
chroma
block
quantization parameter
image
value
Prior art date
Application number
BR112021010416-0A
Other languages
English (en)
Inventor
Anand Meher KOTRA
Elena Alexandrovna Alshina
Semih ESENLIK
Biao Wang
Han Gao
Roman Igorevich CHERNYAK
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 BR112021010416A2 publication Critical patent/BR112021010416A2/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • 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
    • 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/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • 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/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/182Methods 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 pixel
    • 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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness

Abstract

CODIFICADOR, DECODIFICADOR E MÉTODOS CORRESPONDENTES PARA REALIZAR DESBLOCAGEM DE CROMA PARA BLOCOS QUE USAM CODIFICAÇÃO DE CROMA EM CONJUNTO. Um método de desblocagem, para desblocar uma borda de bloco de croma (903, 913, 923, 933, 943, 953, 963, 973) entre um primeiro bloco de croma (901, 911, 921, 931, 941, 951, 961, 971) de um primeiro bloco de imagem (601, 601?) e um segundo bloco de croma (902, 912, 922, 932, 942, 952, 962, 972) de um segundo bloco de imagem (602, 602?), em uma codificação de imagem e/ou em uma decodificação de imagem, em que o método de desblocagem compreende: realizar um processo de decisão para a borda de bloco de croma, em que o processo de decisão compreende: determinar um primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma (901, 911, 921, 931, 941, 951, 961, 971) com base em um primeiro parâmetro de quantização de luma (QpYP) de um primeiro bloco de luma (801) do primeiro bloco de imagem (601, 601?) e em uma tabela de mapeamento de QP de croma para o primeiro bloco de croma; determinar um segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma (902, 912, 922, 932, 942, 952, 962, 972) com base em um segundo parâmetro de quantização de luma (QpYQ) de um segundo bloco de luma (802) do segundo bloco de imagem (602, 602?) e em uma tabela de mapeamento de QP de croma para o segundo bloco de croma; determinar um parâmetro de quantização de croma (QpC) promediado e arredondado com base no primeiro parâmetro de quantização de croma (QpCp) e no segundo parâmetro de quantização de croma (QpCq); e determinar um parâmetro de limiar (tC) com base no parâmetro de quantização de croma (QpC) promediado e arredondado; e realizar um processo de filtragem para a borda de bloco de croma com base no parâmetro de limiar (tC).

Description

“CODIFICADOR, DECODIFICADOR E MÉTODOS CORRESPONDENTES PARA REALIZAR DESBLOCAGEM DE CROMA PARA BLOCOS QUE USAM CODIFICAÇÃO DE CROMA EM CONJUNTO” REFERÊNCIA CRUZADA A PEDIDOS RELACIONADOS
[0001] Este pedido de patente reivindica o benefício de prioridade ao Pedido Internacional no PCT/EP2019/072643, depositado em 23 de agosto de 2019, ao Pedido Internacional no PCT/RU2019/000639, depositado em 16 de setembro de 2019, e ao Pedido Internacional n o PCT/EP2019/077057, depositado em 7 de outubro de 2019. Os pedidos de patente supracitados são incorporados à presente invenção a título de referência em sua totalidade.
CAMPO DA TÉCNICA
[0002] As modalidades da presente revelação referem-se, de modo geral, ao campo de processamento de imagem, por exemplo, codificação de imagem estacionária e/ou imagem de vídeo. De maneira especial, a invenção se refere a aperfeiçoamentos do filtro de desblocagem.
FUNDAMENTOS
[0003] A codificação de imagem (codificação e decodificação) é usada em uma variedade de aplicações de imagem digital, por exemplo, TV digital por broadcast, transmissão de vídeo pela internet e redes móveis, aplicações de conversão em tempo real, tais como chat por vídeo, videoconferência, discos DVD e Blu-ray, sistemas de aquisição e edição de conteúdo de vídeo e camcorders de aplicações de segurança.
[0004] Desde o desenvolvimento da abordagem de codificação de vídeo híbrida com base em bloco no padrão H.261 em 1990, novas técnicas e ferramentas de codificação de vídeo foram desenvolvidas e formaram a base para novos padrões de codificação de vídeo. Uma das metas da maioria dos padrões de codificação de vídeo era alcançar uma redução de taxa de bit quando comparado ao seu antecessor sem comprometer a qualidade de imagem. Os padrões de codificação de vídeo adicionais compreendem vídeo MPEG-1, vídeo MPEG-2, ITU-T H.262/MPEG-2, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), ITU-T H.265, Codificação de Vídeo de Alta Eficiência (HEVC), ITU-T H.266/Codificação de vídeo versátil (VVC) e extensões, por exemplo, escalabilidade e/ou extensões tridimensionais (3D), desses padrões.
[0005] Os esquemas de codificação de imagem com base em bloco têm em comum que ao longo das bordas de bloco, artefatos de borda podem aparecer. Esses artefatos se devem à codificação independente dos blocos de codificação. Esses artefatos de borda costumam ser prontamente visíveis a um usuário. Uma meta em codificação de imagem com base em bloco é reduzir artefatos de borda abaixo de um limiar de visibilidade. Isso é realizado realizando-se filtragem loop, tal como realizando-se filtragem de desblocagem. Tal filtragem de desblocagem é, por um lado, realizada no lado de decodificação, a fim de remover os artefatos de borda visíveis, mas também no lado de codificação, a fim de impedir que os artefatos de borda sejam codificados na imagem. O processo de filtro de desblocagem geralmente inclui processo de decisão e processo de filtragem para bordas de bloco de luma, e processo de decisão e processo de filtragem para bordas de bloco de croma.
[0006] Entretanto, desblocar uma borda de bloco de croma entre dois blocos de croma adjacentes pode ser desafiador. Por exemplo, as informações usadas para desblocar a borda de bloco de croma podem ser derivadas do bloco de luma correspondente e se perder durante o processo de derivação, levando a processo de desblocagem não acurado. Em outro exemplo, novo tipo de blocos de croma, tal como blocos de croma codificados usando ferramentas de codificação residual Cb-Cr em conjunto (JCCR) (ou a saber, codificação em conjunto de ferramentas residuais de crominância (JCCR)) pode representar novos desafios para filtragem de desblocagem.
SUMÁRIO
[0007] Tendo em vista os desafios mencionados acima, a presente invenção visa aperfeiçoar a filtragem de desblocagem convencional. A presente invenção tem o objetivo de fornecer um aparelho de filtro de desblocagem, um codificador, um decodificador e métodos correspondentes que podem realizar filtragem de desblocagem de modo acurado, desse modo, o desblocagem deve ser mais eficiente.
[0008] As modalidades da invenção são definidas pelos recursos das reivindicações independentes, e outras implementações vantajosas das modalidades pelos recursos das reivindicações dependentes.
[0009] As modalidades particulares são fornecidas nas reivindicações independentes anexas, com outras modalidades nas reivindicações dependentes.
[0010] De acordo com um primeiro aspecto, a invenção se refere a um método de desblocagem, para desblocar uma borda de bloco de croma entre um primeiro bloco de croma de um primeiro bloco de imagem e um segundo bloco de croma de um segundo bloco de imagem, em uma codificação de imagem e/ou uma decodificação de imagem, em que o método de desblocagem compreende: realizar um processo de decisão para a borda de bloco de croma, em que o processo de decisão compreende: determinar um primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma com base em um primeiro parâmetro de quantização de luma (QpYP) de um primeiro bloco de luma (801) do primeiro bloco de imagem e em uma tabela de mapeamento de parâmetro de quantização de croma (QP) para o primeiro bloco de croma; determinar um segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma com base em um segundo parâmetro de quantização de luma (QpYQ) de um segundo bloco de luma do segundo bloco de imagem e em uma tabela de mapeamento de QP de croma para o segundo bloco de croma; determinar um terceiro parâmetro de quantização de croma (por exemplo, um parâmetro de quantização de croma promediado e arredondado) (QpC) com base no primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma e no segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma; e determinar um parâmetro de limiar (tC) com base no terceiro parâmetro de quantização de croma (por exemplo, um parâmetro de quantização de croma promediado e arredondado) (QpC); realizar um processo de filtragem para a borda de bloco de croma pelo menos com base no parâmetro de limiar.
[0011] Pode-se entender que o terceiro QP de croma (QpC) pode ser usado, de maneira direta ou indireta, para determinar se a borda de bloco de croma deve ser filtrada e/ou se a aplicação de desblocagem forte ou normal (tal como, uma filtragem longa ou uma filtragem fraca deve ser realizada). Em um exemplo, o parâmetro de limiar (tC) pode depender do terceiro parâmetro de quantização de croma (por exemplo, o parâmetro de quantização de croma promediado e arredondado) (QpC) e pode ser derivado de uma tabela de consulta. O parâmetro de limiar (tC) pode ser usado para determinar se a borda de bloco de croma deve ser filtrada e/ou se a aplicação de desblocagem forte ou normal (tal como, uma filtragem longa ou uma filtragem fraca deve ser realizada). Observa-se que o parâmetro de limiar (tC) é o parâmetro de restrição (clipping) durante o processo de filtragem para a borda de bloco de croma (particularmente, o processo de filtragem para uma ou mais amostras de croma que são perpendiculares e adjacentes à borda de bloco de croma).
[0012] Pode-se entender que, para o processo de filtragem para a borda de bloco de croma, de modo correspondente no segundo bloco de croma, para cada linha de amostras de croma de entrada que são perpendiculares e adjacentes à borda de bloco de croma, no máximo número MA de amostras de croma são modificadas para gerar as amostras de croma filtradas de saída; no primeiro bloco de croma, para cada linha de amostras de croma de entrada que são perpendiculares e adjacentes à borda de bloco de croma, no máximo número MB de amostras de croma são modificadas para gerar as amostras de croma filtradas de saída. Pode-se entender que o valor de MA ou MB depende do tamanho de bloco (da largura e altura) de qualquer um dentre o primeiro e segundo blocos de croma.
[0013] Observa-se que os detalhes de como o parâmetro de limiar (tC) é usado para o processo de filtragem para a borda de bloco de croma podem estar em documentos, tais como a especificação VVC, que não são repetidos na presente invenção.
[0014] Observa-se que o termo “bloco”, “bloco de codificação” ou “bloco de imagem” é usado na presente revelação que pode ser aplicado para unidades de transformada (TUs), unidades de predição (PUs), unidades de codificação (CUs) etc. Em VVC, em geral, unidades de transformada e unidades de codificação são de modo geral alinhadas exceto em alguns cenários em que tiling de TU ou transformada de sub-bloco (SBT) é usada. Pode-se entender que os termos “bloco/bloco de imagem/bloco de codificação/bloco de transformada”, e “tamanho de bloco/tamanho de bloco de transformada” podem ser intercambiados um com o outro na presente revelação. Os termos “amostra/pixel” podem ser intercambiados um com o outro na presente revelação.
[0015] A invenção serve para bordas de bloco de croma verticais e horizontais.
[0016] Isso permite o desblocagem de uma borda de bloco de croma entre um primeiro bloco de croma de um primeiro bloco de imagem e um segundo bloco de croma de um segundo bloco de imagem corretamente. Com a tecnologia apresentada na presente invenção, as informações contidas no QP de luma para dois blocos adjacentes são preservadas e usadas para determinar os respectivos QPs de croma. Isso impede a perda de informações causada pela abordagem existente em que o QP de croma é determinado com base em um valor promediado de QPs de luma dos dois blocos de luma adjacentes. Além disso, o uso de respectivas tabelas de mapeamento de ChromaQP, conforme apresentado na presente invenção, permite que o QP de croma seja determinado de maneira mais acurada para diferentes componentes croma. Como resultado, o processo de desblocagem é mais eficaz na remoção de artefatos de blocagem, aperfeiçoando, desse modo, a qualidade visual do vídeo codificado.
[0017] Em uma possível forma de implantação, pelo menos um dentre o primeiro bloco de croma e o segundo bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR).
[0018] Com a tecnologia apresentada na presente invenção, o valor de QP de croma final para os blocos codificados Cb-Cr em conjunto pode ser derivado (ou mapeado) corretamente com base em seu valor de QP de luma correspondente para alcançar decisões de desblocagem corretas e alcançar, desse modo, melhor qualidade visual do vídeo codificado. Desse modo, o resultado da filtragem de desblocagem é significativamente aperfeiçoado.
[0019] Em uma possível forma de implantação, o primeiro bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR) do primeiro bloco de imagem, e o segundo bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR) do segundo bloco de imagem; ou o primeiro bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR) do primeiro bloco de imagem, e o segundo bloco de croma é um primeiro componente croma do segundo bloco de imagem; ou o primeiro bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR) do primeiro bloco de imagem, e o segundo bloco de croma é um segundo componente croma do segundo bloco de imagem; ou o primeiro bloco de croma é um primeiro componente croma do primeiro bloco de imagem, e o segundo bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR) do segundo bloco de imagem; ou o primeiro bloco de croma é um segundo componente croma do primeiro bloco de imagem, e o segundo bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR) do segundo bloco de imagem; ou o primeiro bloco de croma é um primeiro componente croma do primeiro bloco de imagem, e o segundo bloco de croma é um primeiro componente croma do segundo bloco de imagem; ou o primeiro bloco de croma é um segundo componente croma do primeiro bloco de imagem, e o segundo bloco de croma é um segundo componente croma do segundo bloco de imagem.
[0020] Com a tecnologia apresentada na presente invenção, no caso em que o primeiro e segundo blocos de croma são tipos diferentes, a ordem das etapas do método, de acordo com as modalidades da presente revelação, é satisfatória sem perda de informações. Além disso, os valores de QP de croma derivados finais para os blocos de croma incluindo os blocos codificados Cb-Cr em conjunto são mais acurados e, portanto, podem resultar em melhores decisões de desblocagem resultando, desse modo, em melhor qualidade visual.
[0021] Em uma possível forma de implantação, a tabela de mapeamento de parâmetro de quantização (QP) de croma para o primeiro bloco de croma ou o segundo bloco de croma compreende pelo menos um dentre: uma primeira tabela de mapeamento de QP de croma para um bloco codificado Cb-Cr em conjunto. uma segunda tabela de mapeamento de QP de croma para um primeiro componente croma (tal como um componente Cb), ou uma terceira tabela de mapeamento de QP de croma para um segundo componente croma (tal como um componente Cr).
[0022] Em um exemplo, cada tabela de mapeamento de QP de croma tem um mesmo número de entradas. Observa-se que, no relatório descritivo, nas reivindicações e nos desenhos anexos da presente invenção, os termos
“primeiro”, “segundo”, “terceiro” e assim por diante (se houver) se destinam a distinguir entre objetos similares, mas não indicam, necessariamente, uma ordem ou sequência específica.
[0023] Com a tecnologia apresentada na presente invenção, o uso de respectivas tabelas de mapeamento de ChromaQP, conforme apresentado na presente invenção, permite que o QP de croma seja determinado de maneira mais acurada para diferentes componentes croma. Como resultado, o processo de desblocagem é mais eficaz na remoção de artefatos de blocagem, aperfeiçoando, desse modo, a qualidade visual do vídeo codificado.
[0024] Em uma possível forma de implantação, em que a primeira tabela de mapeamento de QP de croma, a segunda tabela de mapeamento de QP de croma e a terceira tabela de mapeamento de QP de croma são indicadas ou indexadas por um primeiro valor de índice, um segundo valor de índice e um terceiro valor de índice, respectivamente.
[0025] Em um exemplo, quando o segundo valor de índice é igual a 0, ChromaQpTable[0] é a segunda tabela de mapeamento de QP de croma para o primeiro componente croma. Quando o terceiro valor de índice é igual a 1, ChromaQpTable[1] é a terceira tabela de mapeamento de QP de croma para o segundo componente croma. Quando o primeiro valor de índice é igual a 2, ChromaQpTable[2] é a primeira tabela de mapeamento de QP de croma para um bloco codificado residual Cb-Cr em conjunto (JCCR). Em um exemplo, a tabela de mapeamento de QP de croma ChromaQpTable[ i ] pode ser derivada com base em parâmetros ou informações obtidas de um fluxo de bits, i=0, 1 ou
2. Em outro exemplo, ChromaQpTable[ i ] podem ser tabelas de mapeamento de QP de croma predefinidas.
[0026] Em uma possível forma de implantação, em que o primeiro valor de índice é 3, o segundo valor de índice é 1 e o terceiro índice é 2; ou em que o primeiro valor de índice é 2, o segundo valor de índice é 0 e o terceiro índice é 1.
[0027] Em uma possível forma de implantação, se o primeiro bloco de croma for um bloco codificado residual Cb-Cr em conjunto (JCCR) do primeiro bloco de imagem (601, 601’), o primeiro parâmetro de quantização de croma (QpCp) é derivado com base em um valor de QP de croma que corresponde a um valor restrito do primeiro parâmetro de quantização de luma (QpYP) na primeira tabela de mapeamento de QP de croma; se o primeiro bloco de croma for um primeiro componente croma (tal como um componente Cb) do primeiro bloco de imagem, o primeiro parâmetro de quantização de croma (QpCp) é derivado com base em um valor de QP de croma que corresponde a um valor restrito do primeiro parâmetro de quantização de luma (QpYP) na segunda tabela de mapeamento de QP de croma; ou se o primeiro bloco de croma for um segundo componente croma (tal como um componente Cr) do primeiro bloco de imagem, o primeiro parâmetro de quantização de croma (QpCp) é derivado com base em um valor de QP de croma que corresponde a um valor restrito do primeiro parâmetro de quantização de luma (QpYP) na terceira tabela de mapeamento de QP de croma.
[0028] Observa-se que o primeiro parâmetro de quantização de luma (QpYP) do primeiro bloco de luma não é diretamente usado para derivar o primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma. Uma etapa intermediária, tal como restrição de valor (clipping), pode ser usada no primeiro QP de luma.
[0029] Com a tecnologia apresentada na presente invenção, o uso de respectivas tabelas de mapeamento de ChromaQP, conforme apresentado na presente invenção, permite que o QP de croma seja determinado de maneira mais acurada para diferentes componentes croma. Como resultado, o processo de desblocagem é mais eficaz na remoção de artefatos de blocagem, aperfeiçoando, desse modo, a qualidade visual do vídeo codificado.
[0030] Em uma possível forma de implantação, se o segundo bloco de croma for um bloco codificado residual Cb-Cr em conjunto (JCCR) do segundo bloco de imagem (602, 602’), o segundo parâmetro de quantização de croma (QpCq) é derivado com base em um valor de QP de croma que corresponde a um valor restrito do segundo parâmetro de quantização de luma (QpYQ) na primeira tabela de mapeamento de QP de croma; se o segundo bloco de croma for um primeiro componente croma (tal como um componente Cb) do segundo bloco de imagem, o segundo parâmetro de quantização de croma (QpCq) é derivado com base em um valor de QP de croma que corresponde a um valor restrito do segundo parâmetro de quantização de luma (QpYQ) na segunda tabela de mapeamento de QP de croma; ou se o segundo bloco de croma for um segundo componente croma (tal como um componente Cr) do segundo bloco de imagem, o segundo parâmetro de quantização de croma (QpCq) é derivado com base em um valor de QP de croma que corresponde a um valor restrito do segundo parâmetro de quantização de luma (QpYQ) na terceira tabela de mapeamento de QP de croma.
[0031] Observa-se que o segundo parâmetro de quantização de luma (QpYQ) do segundo bloco de luma não é diretamente usado para derivar o segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma. Uma etapa intermediária, tal como restrição de valor (clipping), pode ser usada no segundo QP de luma.
[0032] Com a tecnologia apresentada na presente invenção, o uso de respectivas tabelas de mapeamento de ChromaQP, conforme apresentado na presente invenção, permite que o QP de croma seja determinado de maneira mais acurada para diferentes componentes croma. Como resultado, o processo de desblocagem é mais eficaz na remoção de artefatos de blocagem, aperfeiçoando, desse modo, a qualidade visual do vídeo codificado.
[0033] Em uma possível forma de implantação, a determinação de um primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma com base em um primeiro parâmetro de quantização de luma (QpYP) de um primeiro bloco de luma do primeiro bloco de imagem e em uma tabela de mapeamento de parâmetro de quantização (QP) de croma para o primeiro bloco de croma, compreende: obter um valor de QP restrito (qPiChroma) com base no primeiro parâmetro de quantização de luma (QpYP) do primeiro bloco de luma (801); tal como, qPiChroma = Clip3( −QpBdOffset, 63, QpYP); determinar um valor de QP de croma (qPiCb, qPiCr, qPiCbCr) para o primeiro bloco de croma com base no valor de QP restrito (qPiChroma) usando-se a tabela de mapeamento de QP de croma para o primeiro bloco de croma; e determinar o primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma com base em um valor restrito do valor de QP de croma (qPiCb, qPiCr, qPiCbCr).
[0034] Em um exemplo, o primeiro parâmetro de quantização de croma (QpCp) é obtido adicionando-se um valor predefinido QpBdOffset ao valor restrito do valor de QP de croma (qPiCb, qPiCr, qPiCbCr), o valor predefinido é obtido com base na profundidade de bit das sequências codificadas. Com a tecnologia apresentada na presente invenção, a mesma permite que o valor do primeiro parâmetro de quantização de croma (QpCp) seja diferente de zero.
[0035] Em uma possível forma de implantação, a determinação de um segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma com base em um segundo parâmetro de quantização de luma (QpYQ) de um segundo bloco de luma do segundo bloco de imagem e na tabela de mapeamento de QP de croma para o segundo bloco de croma, compreende: obter um valor de QP restrito (qPiChroma) com base no segundo parâmetro de quantização de luma (QpYQ) do segundo bloco de luma; tal como, qPiChroma = Clip3( −QpBdOffset, 63, QpYQ); determinar um valor de QP de croma (qPiCb, qPiCr, qPiCbCr) para o segundo bloco de croma com base no valor de QP restrito (qPiChroma) usando-se a tabela de mapeamento de QP de croma para o segundo bloco de croma; e determinar o segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma com base em um valor restrito do valor de QP de croma (qPiCb, qPiCr, qPiCbCr).
[0036] Em um exemplo, o segundo parâmetro de quantização de croma (QpCq) é obtido adicionando-se um valor predefinido QpBdOffset ao valor restrito do valor de QP de croma (qPiCb, qPiCr, qPiCbCr), o valor predefinido é obtido com base na profundidade de bit das sequências codificadas. Com a tecnologia apresentada na presente invenção, a mesma permite que o valor do segundo parâmetro de quantização de croma (QpCq) seja diferente de zero.
[0037] Em uma possível forma de implantação, a determinação do terceiro parâmetro de quantização de croma (QpC) com base no primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma e no segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma, compreende: determinar o terceiro parâmetro de quantização de croma (por exemplo, um parâmetro de quantização de croma promediado e arredondado QpC) (QpC) de acordo com a seguinte equação, QpC = ( QpQ + QpP + 1 ) >> 1 em que QpP se baseia no primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma e QpQ se baseia no segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma.
[0038] Pode-se entender que a motivação de promediação usando desvio para direita é para evitar o uso de divisão, visto que divisão em hardware é uma operação dispendiosa. Na prática, a promediação é normalmente implantada desse modo (a+b+1) >> 1. A adição de 1 antes de desvio para direita é uma aproximação de arredondamento, garante que o resultado médio é arredondado, por exemplo, (a+b+2 bits-1) >> bits igual a (a + b + 2bits-1) /2bits , tal como, bits=1.
[0039] Em uma possível forma de implantação, Qp P é obtido subtraindo-se um valor de deslocamento (QpBdOffset) do primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma; e QpQ é obtido subtraindo-se o valor de deslocamento (QpBdOffset) do segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma.
[0040] Em uma possível forma de implantação, o bloco codificado Cb- Cr em conjunto é codificado usando um modo JCCR e o modo JCCR é um segundo modo de um conjunto de modos JCCR disponíveis. Tal como, a variável TuCResMode é definida como igual a 2.
[0041] De acordo com um segundo aspecto, a invenção se refere a um aparelho de filtro de desblocagem para uso em um codificador de imagem e/ou um decodificador de imagem, para desblocar uma borda de bloco de croma entre um primeiro bloco de croma de um primeiro bloco de imagem e um segundo bloco de croma de um segundo bloco de imagem, em que o aparelho de filtro de desblocagem é configurado para: realizar um processo de decisão para a borda de bloco de croma, em que o processo de decisão compreende: determinar um primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma com base em um primeiro parâmetro de quantização de luma (QpYP) de um primeiro bloco de luma do primeiro bloco de imagem e em uma tabela de mapeamento de parâmetro de quantização de croma (QP) para o primeiro bloco de croma; determinar um segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma com base em um segundo parâmetro de quantização de luma (QpYQ) de um segundo bloco de luma (802) do segundo bloco de imagem e em uma tabela de mapeamento de QP de croma para o segundo bloco de croma; determinar um terceiro parâmetro de quantização de croma (QpC) com base no primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma e no segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma; e determinar um parâmetro de limiar (tC) com base no terceiro parâmetro de quantização de croma (QpC); realizar um processo de filtragem para a borda de bloco de croma (903, 913, 923) pelo menos com base no parâmetro de limiar.
[0042] O aparelho, de acordo com o segundo aspecto, pode ser estendido para formas de implantação que correspondem às formas de implantação do método de acordo com o primeiro aspecto. Portanto, uma forma de implantação do aparelho compreende o recurso(s) da forma de implantação correspondente do método de acordo com o primeiro aspecto.
[0043] As vantagens do aparelho, de acordo com o segundo aspecto, são iguais àquelas para as formas de implantação correspondentes do método, de acordo com o primeiro aspecto.
[0044] O método, de acordo com o primeiro aspecto da invenção, pode ser realizado pelo aparelho, de acordo com o segundo aspecto da invenção. Os recursos e formas de implantação adicionais do método, de acordo com o primeiro aspecto da invenção, correspondem aos recursos e formas de implantação do aparelho, de acordo com o segundo aspecto da invenção.
[0045] De acordo com um terceiro aspecto da invenção, um aparelho de codificação de vídeo é fornecido, o aparelho de codificação de vídeo para codificar uma imagem de um fluxo de vídeo, em que o aparelho de codificação de vídeo compreende o aparelho de filtro de desblocagem de acordo com qualquer implantação precedente de qualquer aspecto precedente ou qualquer aspecto precedente como tal.
[0046] Isso permite uma codificação muito eficiente e acurada da imagem.
[0047] De acordo com um quarto aspecto da invenção, um aparelho de decodificação de vídeo é fornecido, o aparelho de decodificação de vídeo para decodificar uma imagem de um fluxo de vídeo codificado, em que o aparelho de decodificação de vídeo compreende o aparelho de filtro de desblocagem de acordo com qualquer implantação precedente de qualquer aspecto precedente ou qualquer aspecto precedente como tal.
[0048] Isso permite uma decodificação especialmente acurada e eficiente da imagem.
[0049] De acordo com um quinto aspecto, a invenção se refere a um aparelho para decodificar um fluxo de vídeo que inclui um processador e uma memória. A memória armazena instruções que fazem com que o processador realize o método de desblocagem de acordo com qualquer implantação precedente de qualquer aspecto precedente ou qualquer aspecto precedente como tal.
[0050] De acordo com um sexto aspecto, a invenção se refere a um aparelho para codificar um fluxo de vídeo que inclui um processador e uma memória. A memória armazena instruções que fazem com que o processador realize o método de desblocagem de acordo com qualquer implantação precedente de qualquer aspecto precedente ou qualquer aspecto precedente como tal.
[0051] De acordo com outro aspecto, uma mídia de armazenamento legível por computador é proposta que tem instruções armazenadas na mesma que, quando executadas, fazem com que um ou mais processadores configurados para codificar dados de vídeo. As instruções fazem com que o um ou mais processadores realizem o método de desblocagem de acordo com qualquer implantação precedente de qualquer aspecto precedente ou qualquer aspecto precedente como tal.
[0052] De acordo com outro aspecto, um produto de programa de computador é fornecido com um código de programa para realizar o método de desblocagem, de acordo com qualquer implantação precedente de qualquer aspecto precedente ou qualquer aspecto precedente como tal, quando o programa de computador é executado em um computador.
[0053] Os detalhes de uma ou mais modalidades são estabelecidos nos desenhos anexos e na descrição abaixo. Outros recursos, objetivos e vantagens serão evidentes a partir da descrição, desenhos e reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0054] A seguir, as modalidades da invenção são descritas em mais detalhes com referência às figuras e desenhos anexos, em que:
[0055] A Figura 1A é um diagrama de blocos que mostra um exemplo de um sistema de codificação de vídeo configurado para implantar as modalidades da invenção;
[0056] A Figura 1B é um diagrama de blocos que mostra outro exemplo de um sistema de codificação de vídeo configurado para implantar as modalidades da invenção;
[0057] A Figura 2 é um diagrama de blocos que mostra um exemplo de um codificador de vídeo configurado para implantar as modalidades da invenção;
[0058] A Figura 3 é um diagrama de blocos que mostra uma estrutura exemplificativa de um decodificador de vídeo configurado para implantar as modalidades da invenção;
[0059] A Figura 4 é um diagrama de blocos que ilustra um exemplo de um aparelho de codificação ou um aparelho de decodificação;
[0060] A Figura 5 é um diagrama de blocos que ilustra outro exemplo de um aparelho de codificação ou um aparelho de decodificação;
[0061] A Figura 6A mostra dois blocos de imagem exemplificativos (tais como blocos de transformada ou blocos de codificação);
[0062] A Figura 6B mostra dois blocos de imagem exemplificativos (tais como blocos de transformada ou blocos de codificação);
[0063] A Figura 7A é um diagrama conceitual que ilustra localizações relativas vertical e horizontal nominais de amostras de luma e croma;
[0064] A Figura 7B é um diagrama esquemático que ilustra um bloco de luma colocalizado e um bloco de croma;
[0065] A Figura 8 mostra dois blocos de luma exemplificativos (tais como componentes luma de blocos de transformada ou blocos de codificação);
[0066] As Figuras 9A a 9H são diagramas esquemáticos que ilustram um mecanismo exemplificativo de desblocagem de uma borda de bloco de croma entre um primeiro bloco de croma de um primeiro bloco de imagem e um segundo bloco de croma de um segundo bloco de imagem;
[0067] A Figura 10 mostra uma modalidade do dispositivo de filtro de desblocagem de acordo com as modalidades da invenção;
[0068] A Figura 11 mostra uma modalidade de um fluxograma que ilustra um método de desblocagem, para desblocar uma borda de bloco de croma entre um primeiro bloco de croma de um primeiro bloco de imagem e um segundo bloco de croma de um segundo bloco de imagem;
[0069] As Figuras 12A e 12B mostram duas tabelas de mapeamento de QP de croma exemplificativas;
[0070] A Figura 13 mostra uma tabela de mapeamento de QP de croma separada exemplificativa para cada componente;
[0071] A Figura 14 é um diagrama de blocos que mostra uma estrutura exemplificativa de um sistema de fornecimento de conteúdo 3100 que realiza um serviço de entrega de conteúdo;
[0072] A Figura 15 é um diagrama em blocos que mostra uma estrutura de um exemplo de um dispositivo terminal;
[0073] A Figura 16 é um fluxograma de um método de desblocagem de acordo com alguns aspectos da presente revelação; e
[0074] A Figura 17 é um fluxograma de um processo de decisão de acordo com alguns aspectos da presente revelação.
[0075] A seguir, referências numéricas idênticas se referem a recursos idênticos ou pelo menos funcionalmente equivalentes, caso não sejam especificados explicitamente de outro modo.
DESCRIÇÃO DETALHADA DAS MODALIDADES
[0076] As seguintes definições são usadas para a referência: bloco de codificação: Um bloco MxN de amostras para alguns valores de M e N de modo que a divisão de um CTB em blocos de codificação seja um particionamento. bloco de árvore de codificação (CTB): Um bloco NxN de amostras para algum valor de N de modo que a divisão de um componente em CTBs seja um particionamento. unidade de árvore de codificação (CTU): Um CTB de amostras de luma, dois CTBs correspondentes de amostras de croma de uma imagem que tem três arranjos de amostra, ou um CTB de amostras de uma imagem monocromática ou uma imagem que é codificada com o uso de três planos de cores separados e estruturas de sintaxe usadas para codificar as amostras. unidade de codificação (CU): Um bloco de codificação de amostras de luma, dois blocos de codificação correspondentes de amostras de croma de uma imagem que tem três arranjos de amostra, ou um bloco de codificação de amostras de uma imagem monocromática ou uma imagem que é codificada com o uso de três planos de cores separados e estruturas de sintaxe usadas para codificar as amostras. componente: Um arranjo ou única amostra de um dentre os três arranjos (luma e dois croma) que compõe uma imagem em formato de cor 4:2:0, 4:2:2, ou 4:4:4 ou o arranjo ou uma única amostra do arranjo que compõe uma imagem em formato monocromático.
[0077] Na descrição a seguir, referência é feita às figuras anexas, que formam parte da revelação, e que mostram, a título de ilustração, aspectos específicos de modalidades da invenção ou aspectos específicos em que as modalidades da presente invenção podem ser usadas. Entende-se que as modalidades da invenção podem ser usadas em outros aspectos e compreendem mudanças estruturais ou lógicas não retratadas nas figuras. A descrição detalhada a seguir, portanto, não deve ser considerada em um sentido limitante, e o escopo da presente invenção é definido pelas reivindicações anexas.
[0078] Por exemplo, entende-se que uma revelação, em conexão com um método descrito, também pode ser verdadeira para um dispositivo ou sistema correspondente configurado para realizar o método e vice-versa. Por exemplo, se uma ou uma pluralidade de etapas de método específicas for descrita, um dispositivo correspondente pode incluir uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, para realizar a uma ou pluralidade de etapas de método descritas (por exemplo, uma unidade que realiza a uma ou pluralidade de etapas, ou uma pluralidade de unidades que realiza, cada uma, uma ou mais dentre a pluralidade de etapas), até mesmo se tal uma ou mais unidades não estiverem explicitamente descritas ou ilustradas nas figuras. Por outro lado, por exemplo, se um aparelho específico for descrito com base em uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, um método correspondente pode incluir uma etapa para realizar a funcionalidade da uma ou pluralidade de unidades (por exemplo, uma etapa que realiza a funcionalidade da uma ou pluralidade de unidades, ou uma pluralidade de etapas que realiza, cada uma, a funcionalidade de uma ou mais dentre a pluralidade de unidades), até mesmo se tal uma ou pluralidade de etapas não estiver explicitamente descrita ou ilustrada nas figuras. Adicionalmente, entende-se que os recursos das várias modalidades e/ou aspectos exemplificativos, descritos no presente documento, podem ser combinados uns com os outros, a menos que estabelecido especificamente de outro modo.
[0079] A codificação de vídeo tipicamente se refere ao processamento de uma sequência de imagens, que forma o vídeo ou sequência de vídeo. Em vez do termo “imagem”, o termo “quadro” ou “foto” pode ser usado como sinônimo no campo de codificação de vídeo. A codificação de vídeo (ou codificação em geral) compreende duas partes codificação de vídeo e decodificação de vídeo. A codificação de vídeo é realizada no lado de origem, que compreende, tipicamente, processamento (por exemplo, por compressão) das imagens de vídeo originais para reduzir a quantidade de dados necessária para representar as imagens de vídeo (para armazenamento e/ou transmissão mais eficientes). A decodificação de vídeo é realizada no lado de destino e tipicamente compreende o processamento inverso, quando comparado ao codificador, para reconstruir as imagens de vídeo. As modalidades que se referem à “codificação” de imagens de vídeo (ou imagens em geral) devem ser entendidas se referir à “codificação” ou “decodificação” de imagens de vídeo ou respectivas sequências de vídeo. A combinação da parte de codificação e da parte de decodificação também é denominada CODEC (Codificação e Decodificação).
[0080] Em caso de codificação de vídeo sem perda de dados, as imagens de vídeo originais podem ser reconstruídas, isto é, as imagens de vídeo reconstruídas têm a mesma qualidade que as imagens de vídeo originais (supondo nenhuma perda de transmissão ou perda de outros dados durante armazenamento ou transmissão). Em caso de codificação de vídeo com perda de dados, compressão adicional, por exemplo, por quantização, é realizada para reduzir a quantidade de dados que representam as imagens de vídeo, que não podem ser completamente reconstruídas no decodificador, isto é, a qualidade das imagens de vídeo reconstruídas é menor ou pior quando comparado à qualidade das imagens de vídeo originais.
[0081] Diversos padrões de codificação de vídeo pertencem ao grupo de “codecs de vídeo híbrido com perda de dados” (isto é, combinam predição espacial e temporal no domínio de amostra e codificação de transformada 2D para aplicar quantização no domínio de transformada). Cada imagem de uma sequência de vídeo é tipicamente particionada em um conjunto de blocos não sobrepostos e a codificação é tipicamente realizada em um nível de bloco. Em outras palavras, no codificador, o vídeo é tipicamente processado, isto é, codificado, em um nível de bloco (bloco de vídeo), por exemplo, usando-se predição espacial (imagem intra) e/ou predição temporal (imagem inter) para gerar um bloco de predição, subtraindo o bloco de predição do bloco atual (bloco atualmente processado/a ser processado) para obter um bloco residual, transformando o bloco residual e quantizando o bloco residual no domínio de transformada para reduzir a quantidade de dados a ser transmitida (compressão), enquanto no decodificador, o processamento inverso, quando comparado ao codificador, é aplicado ao bloco codificado ou comprimido para reconstruir o bloco atual para representação. Além disso, o codificador duplica o loop de processamento de decodificador de modo que ambos gerarão predições idênticas (por exemplo, predições intra e inter) e/ou reconstruções para processar, isto é, codificar os blocos subsequentes.
[0082] Nas modalidades a seguir de um sistema de codificação de vídeo 10, um codificador de vídeo 20 e um decodificador de vídeo 30 são descritos com base nas Figuras 1 a 3.
[0083] A Figura 1A é um diagrama de blocos esquemático que ilustra um sistema de codificação exemplificativo 10, por exemplo, um sistema de codificação de vídeo 10 (ou sistema de codificação 10, a título de concisão) que pode usar técnicas deste presente pedido. O codificador de vídeo 20 (ou codificador 20, a título de concisão) e o decodificador de vídeo 30 (ou decodificador 30, a título de concisão) do sistema de codificação de vídeo 10 representam exemplos de dispositivos que podem ser configurados para realizar técnicas em conformidade com vários exemplos descritos no presente pedido.
[0084] Conforme mostrado na Figura 1A, o sistema de codificação 10 compreende um dispositivo de origem 12 configurado para fornecer dados de imagem codificados 21 por exemplo, a um dispositivo de destino 14 para decodificar os dados de imagem codificados 21.
[0085] O dispositivo de origem 12 compreende um codificador 20, e pode compreender de modo adicional, isto é, de modo opcional, uma fonte de imagem 16, um pré-processador (ou unidade de pré-processamento) 18, por exemplo, um pré-processador de imagem 18 e uma interface de comunicação ou unidade de comunicação 22.
[0086] A fonte de imagem 16 pode compreender ou ser qualquer tipo de dispositivo de captura de imagem, por exemplo, uma câmera para capturar uma imagem do mundo real e/ou qualquer tipo de um dispositivo de geração de imagem, por exemplo, um processador de computação gráfica para gerar uma imagem animada em computador, ou qualquer tipo de outro dispositivo para obter e/ou fornecer uma imagem do mundo real, uma imagem gerada em computador (por exemplo, um conteúdo de tela, uma imagem de realidade virtual (VR)) e/ou qualquer combinação dos mesmos (por exemplo, uma imagem de realidade aumentada (AR)). A fonte de imagem pode ser qualquer tipo de memória ou armazenamento que armazena qualquer uma dentre as imagens supracitadas.
[0087] Realizando-se distinção do pré-processador 18 e do processamento realizado pela unidade de pré-processamento 18, a imagem ou dados de imagem 17 também podem ser denominados imagem crua ou dados de imagem crus 17.
[0088] O pré-processador 18 é configurado para receber os dados de imagem (crus) 17 e realizar pré-processamento nos dados de imagem 17 para obter uma imagem pré-processada 19 ou dados de imagem pré-processados 19. O pré-processamento realizado pelo pré-processador 18 pode compreender, por exemplo, corte, conversão de formato de cor (por exemplo, de RGB para YCbCr), correção de cor ou redução de ruído. Pode-se entender que a unidade de pré- processamento 18 pode ser componente opcional.
[0089] O codificador de vídeo 20 é configurado para receber os dados de imagem pré-processados 19 e fornecer dados de imagem codificados 21 (mais detalhes serão descritos abaixo, por exemplo, com base na Figura 2).
[0090] A interface de comunicação 22 do dispositivo de origem 12 pode ser configurada para receber os dados de imagem codificados 21 e transmitir os dados de imagem codificados 21 (ou qualquer outra versão processada dos mesmos) por meio de canal de comunicação 13 para outro dispositivo, por exemplo, o dispositivo de destino 14 ou qualquer outro dispositivo, para armazenamento ou reconstrução direta.
[0091] O dispositivo de destino 14 compreende um decodificador 30 (por exemplo, um decodificador de vídeo 30), e pode compreender, de modo adicional, isto é, de modo opcional, uma interface de comunicação ou unidade de comunicação 28, um pós-processador 32 (ou unidade de pós-processamento 32) e um dispositivo de exibição 34.
[0092] A interface de comunicação 28 do dispositivo de destino 14 é configurada para receber os dados de imagem codificados 21 (ou qualquer outra versão processada dos mesmos), por exemplo, diretamente do dispositivo de origem 12 ou de qualquer outra fonte, por exemplo, um dispositivo de armazenamento, por exemplo, um dispositivo de armazenamento de dados de imagem codificados, e fornecer os dados de imagem codificados 21 ao decodificador 30.
[0093] A interface de comunicação 22 e a interface de comunicação 28 podem ser configuradas para transmitir ou receber os dados de imagem codificados 21 ou dados codificados 21 por meio de um enlace de comunicação direto entre o dispositivo de origem 12 e o dispositivo de destino 14, por exemplo, uma conexão direta com ou sem fio, ou por meio de qualquer tipo de rede, por exemplo, uma rede com ou sem fio ou qualquer combinação das mesmas, ou qualquer tipo de rede privada e pública, ou qualquer tipo de combinação das mesmas.
[0094] A interface de comunicação 22 pode ser, por exemplo, configurada para empacotar os dados de imagem codificados 21 em um formato apropriado, por exemplo, pacotes, e/ou processar os dados de imagem codificados usando qualquer tipo de codificação de transmissão ou processamento para transmissão por meio de um enlace de comunicação ou rede de comunicação.
[0095] A interface de comunicação 28, que forma a contraparte da interface de comunicação 22, pode ser, por exemplo, configurada para receber os dados transmitidos e processar os dados de transmissão usando qualquer tipo de decodificação de transmissão correspondente ou processamento e/ou desempacotamento para obter os dados de imagem codificados 21.
[0096] Tanto a interface de comunicação 22 quanto a interface de comunicação 28 podem ser configuradas como interfaces de comunicação unidirecionais, conforme indicado pela seta para o canal de comunicação 13 na Figura 1A que aponta do dispositivo de origem 12 para o dispositivo de destino 14, ou interfaces de comunicação bidirecionais, e podem ser configuradas, por exemplo, para enviar e receber mensagens, por exemplo, para preparar uma conexão, para confirmar e trocar quaisquer outras informações relacionadas ao enlace de comunicação e/ou transmissão de dados, por exemplo, transmissão de dados de imagem codificados.
[0097] O decodificador 30 é configurado para receber os dados de imagem codificados 21 e fornecer dados de imagem decodificados 31 ou uma imagem decodificada 31 (mais detalhes serão descritos abaixo, por exemplo, com base na Figura 3 ou na Figura 5).
[0098] O pós-processador 32 do dispositivo de destino 14 é configurado para pós-processar os dados de imagem decodificados 31 (também denominados dados de imagem reconstruídos), por exemplo, a imagem decodificada 31, para obter dados de imagem pós-processados 33, por exemplo, uma imagem pós-processada 33. O pós-processamento realizado pela unidade de pós-processamento 32 pode compreender, por exemplo, conversão de formato de cor (por exemplo, de YCbCr para RGB), correção de cor, corte ou reamostragem ou qualquer outro processamento, por exemplo, para preparar os dados de imagem decodificados 31 para exibição, por exemplo, pelo dispositivo de exibição 34.
[0099] O dispositivo de exibição 34 do dispositivo de destino 14 é configurado para receber os dados de imagem pós-processados 33 para exibir a imagem, por exemplo, a um usuário ou visualizador. O dispositivo de exibição 34 pode ser ou compreender qualquer tipo de display para representar a imagem reconstruída, por exemplo, um display ou monitor integrado ou externo. Os displays podem compreender, por exemplo, displays de cristal líquido (LCD), displays de diodos emissores de luz orgânicos (OLED), displays de plasma, projetores, displays de micro LED, cristal líquido em silício (LCoS), processador digital de luz (DLP) ou qualquer tipo de outro display.
[0100] Embora a Figura 1A retrate o dispositivo de origem 12 e o dispositivo de destino 14 como dispositivos separados, as modalidades de dispositivos também podem compreender uma ou ambas as funcionalidades, o dispositivo de origem 12 ou funcionalidade correspondente e o dispositivo de destino 14 ou funcionalidade correspondente. Em tais modalidades, o dispositivo de origem 12 ou funcionalidade correspondente e o dispositivo de destino 14 ou funcionalidade correspondente podem ser implantados usando o mesmo hardware e/ou software ou por hardware e/ou software separados ou qualquer combinação dos mesmos.
[0101] Conforme será evidente aos técnicos no assunto com base na descrição, a existência e divisão (exata) de funcionalidades das diferentes unidades ou funcionalidades dentro do dispositivo de origem 12 e/ou dispositivo de destino 14, conforme mostrado na Figura 1A, podem variar dependendo do dispositivo real e aplicação.
[0102] O codificador 20 (por exemplo, um codificador de vídeo 20) ou o decodificador 30 (por exemplo, um decodificador de vídeo 30) ou tanto o codificador 20 quanto o decodificador 30 podem ser implantados através de circuitos de processamento, conforme mostrado na Figura 1B, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de porta programáveis em campo (FPGAs), lógica discreta, hardware, codificação de vídeo dedicada ou quaisquer combinações dos mesmos. O codificador 20 pode ser implantado através de circuitos de processamento 46 para incorporar os vários módulos, conforme discutido em relação ao codificador 20 da Figura 2 e/ou qualquer outro sistema ou subsistema de codificador descrito no presente documento. O decodificador 30 pode ser implantado através de circuitos de processamento 46 para incorporar os vários módulos, conforme discutido em relação ao decodificador 30 da Figura 3 e/ou qualquer outro sistema ou subsistema de decodificador descrito no presente documento. Os circuitos de processamento podem ser configurados para realizar as várias operações, conforme discutido posteriormente. Conforme mostrado na Figura 5, se as técnicas forem implantadas parcialmente em software, um dispositivo pode armazenar instruções para o software em uma mídia de armazenamento legível por computador não transitória adequada e pode executar as instruções em hardware usando um ou mais processadores para realizar as técnicas desta revelação. Qualquer um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um único dispositivo, por exemplo, conforme mostrado na Figura 1B.
[0103] O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um dentre uma variedade de dispositivos, incluindo qualquer tipo de dispositivos portáteis ou estacionários, por exemplo, computadores do tipo notebook ou laptop, telefones móveis, smartphones, tablets ou computadores do tipo tablet, câmeras, computadores do tipo desktop, decodificadores de sinais, televisores, dispositivos de display, reprodutores de mídia digital, consoles de vídeo game, dispositivos de transmissão de vídeo (tais como servidores de serviços de conteúdo ou servidores de entrega de conteúdo), dispositivo receptor de broadcast, dispositivo transmissor de broadcast ou similares e podem não usar ou usar qualquer tipo de sistema operacional. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio. Desse modo, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser dispositivos de comunicação sem fio.
[0104] Em alguns casos, o sistema de codificação de vídeo 10, ilustrado na Figura 1A, é apenas um exemplo e as técnicas do presente pedido podem se aplicar a configurações de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não incluem, necessariamente, qualquer comunicação de dados entre os dispositivos de codificação e decodificação. Em outros exemplos, dados são recuperados de uma memória local, transmitidos por meio de uma rede ou similares. Um dispositivo de codificação de vídeo pode codificar e armazenar dados na memória, e/ou um dispositivo de decodificação de vídeo pode recuperar e decodificar dados da memória. Em alguns exemplos, a codificação e a decodificação são realizadas por dispositivos que não se comunicam um com o outro, mas simplesmente codificam dados para a memória e/ou recuperam e decodificam dados da memória.
[0105] Por questão de conveniência de descrição, as modalidades da invenção são descritas no presente documento, por exemplo, a título de referência a Codificação de Vídeo de Alta Eficiência (HEVC) ou a referência a software de Codificação de Vídeo Versátil (VVC), o padrão de codificação de vídeo para próxima geração desenvolvido junto a Joint Collaboration Team em Codificação de Vídeo (JCT-VC) de ITU-T Grupo de Especialistas em Codificação de Vídeo (VCEG) e ISO/IEC Grupo de Especialistas em Imagem em Movimento (MPEG). Uma pessoa versada na técnica entenderá que as modalidades da invenção não são limitadas a HEVC ou VVC.
[0106] Codificador e Método de Codificação
[0107] A Figura 2 mostra um diagrama de blocos esquemático de um codificador de vídeo exemplificativo 20 que é configurado para implantar as técnicas do presente pedido. No exemplo da Figura 2, o codificador de vídeo 20 compreende uma entrada 201 (ou interface de entrada 201), 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, uma unidade de filtro loop 220, um buffer de imagem decodificada (DPB) 230, uma unidade de seleção de modo 260, uma unidade de codificação de entropia 270 e uma saída 272 (ou interface de saída 272). A unidade de seleção de modo 260 pode incluir uma unidade de predição inter 244, uma unidade de predição intra 254 e uma unidade de particionamento 262. A unidade de predição inter 244 pode incluir uma unidade de estimação de movimento e uma unidade de compensação de movimento (não mostradas). Um codificador de vídeo 20, conforme mostrado na Figura 2, também pode ser denominado codificador de vídeo híbrido ou um codificador de vídeo, de acordo com um codec de vídeo híbrido.
[0108] A unidade de cálculo residual 204, a unidade de processamento de transformada 206, a unidade de quantização 208, a unidade de seleção de modo 260 podem ser referidas como que formam uma trajetória de sinal de avanço do codificador 20, enquanto a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o buffer 216, o filtro loop 220, o buffer de imagem decodificada (DPB) 230, a unidade de predição inter 244 e a unidade de predição intra 254 podem ser referidas como que formam uma trajetória de sinal de regressão do codificador de vídeo 20, em que a trajetória de sinal de regressão do codificador de vídeo 20 corresponde à trajetória de sinal do decodificador (consulte o decodificador de vídeo 30 na Figura 3). A unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214 o filtro loop 220, o buffer de imagem decodificada (DPB) 230, a unidade de predição inter 244 e a unidade de predição intra 254 também são referidos como que formam o “decodificador interno” do codificador de vídeo 20.
[0109] Imagens & Particionamento de Imagem (Imagens & Blocos)
[0110] O codificador 20 pode ser configurado para receber, por exemplo, por meio da entrada 201, uma imagem 17 (ou dados de imagem 17), por exemplo, imagem de uma sequência de imagens que forma um vídeo ou sequência de vídeo. A imagem ou dados de imagem recebidos também podem ser uma imagem pré-processada 19 (ou dados de imagem pré-processados 19). Por questão de simplicidade, a descrição a seguir se refere à imagem 17. A imagem 17 também pode ser denominada imagem atual ou imagem a ser codificada (em particular, em codificação de vídeo para distinguir a imagem atual de outras imagens, por exemplo, imagens previamente codificadas e/ou decodificadas da mesma sequência de vídeo, isto é, a sequência de vídeo que também compreende a imagem atual).
[0111] Uma imagem (digital) é ou pode ser considerada uma matriz ou arranjo bidimensional de amostras com valores de intensidade. Uma amostra no arranjo também pode ser denominada pixel (forma abreviada de elemento de imagem) ou um pel. O número de amostras na direção horizontal e vertical (ou eixo geométrico) do arranjo ou imagem define o tamanho e/ou resolução da imagem. Para representação de cor, tipicamente três componentes de cor são empregados, isto é, a imagem pode ser representada ou incluir três arranjos de amostra. Em formato RGB ou espaço de cor, uma imagem compreende um arranjo de amostra de vermelho, verde e azul correspondente. Entretanto, em codificação de vídeo, cada pixel é tipicamente representado em um formato de luminância e crominância ou espaço de cor, por exemplo, YCbCr, que compreende um componente de luminância indicado por Y (por vezes L também é usado no lugar de Y) e dois componentes de crominância indicados por Cb e Cr. O componente de luminância (ou luma, a título de concisão) Y representa o brilho ou intensidade de nível de cinza (por exemplo, assim como em uma imagem de escala de cinza), enquanto os dois componentes de crominância (ou croma, a título de concisão) Cb e Cr representam os componentes de informações de cor ou cromaticidade. Assim, uma imagem em formato YCbCr compreende um arranjo de amostra de luminância de valores de amostra de luminância (Y), e dois arranjos de amostra de crominância de valores de crominância (Cb e Cr). As imagens em formato RGB podem ser convertidas ou transformadas em formato YCbCr e vice-versa, o processo também é conhecido como transformação ou conversão de cor. Se uma imagem for monocromática,
a imagem pode compreender apenas um arranjo de amostra de luminância. Assim, uma imagem pode ser, por exemplo, um arranjo de amostras de luma em formato monocromático ou um arranjo de amostras de luma e dois arranjos correspondentes de amostras de croma em formato de cor 4:2:0, 4:2:2 e 4:4:4.
[0112] As modalidades do codificador de vídeo 20 podem compreender uma unidade de particionamento de imagem (não retratada na Figura 2) configurada para particionar a imagem 17 em uma pluralidade de blocos de imagem 203 (tipicamente não sobrepostos). Esses blocos também podem ser denominados blocos raiz, macroblocos (H.264/AVC) ou blocos de árvore de codificação (CTB) ou unidades de árvore de codificação (CTU) (H.265/HEVC e VVC). A unidade de particionamento de imagem 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 que define o tamanho de bloco, ou mudar o tamanho de bloco entre imagens ou subconjuntos ou grupos de imagens, e particionar cada imagem nos blocos correspondentes.
[0113] Em modalidades adicionais, o codificador de vídeo pode ser configurado para receber diretamente um bloco 203 da imagem 17, por exemplo, um, diversos ou todos os blocos que formam a imagem 17. O bloco de imagem 203 também pode ser denominado bloco de imagem atual ou bloco de imagem a ser codificado.
[0114] Assim como a imagem 17, o bloco de imagem 203 novamente é ou pode ser considerado uma matriz ou arranjo bidimensional de amostras com valores de intensidade (valores de amostra), embora de menor dimensão do que a imagem 17. Em outras palavras, o bloco 203 pode compreender, por exemplo, um arranjo de amostra (por exemplo, um arranjo luma em caso de uma imagem monocromática 17, ou um arranjo luma ou croma em caso de uma imagem a cores) ou três arranjos de amostra (por exemplo, um arranjo luma e dois arranjos croma no caso de uma imagem a cores 17) ou qualquer outro número e/ou tipo de arranjos dependendo do formato de cores aplicado. O número de amostras na direção horizontal e vertical (ou eixo geométrico) do bloco 203 define o tamanho do bloco 203. Assim, um bloco pode ser, por exemplo, um arranjo MxN (M colunas por N linhas) de amostras, ou um arranjo MxN de coeficientes de transformada.
[0115] As modalidades do codificador de vídeo 20, conforme mostrado na Figura 2, podem ser configuradas para codificar a imagem 17 bloco por bloco, por exemplo, a codificação e predição são realizadas por bloco 203.
[0116] As modalidades do codificador de vídeo 20, conforme mostrado na Figura 2, podem ser configuradas, ainda, para particionar e/ou codificar a imagem usando-se fatias (também denominadas fatias de vídeo), em que uma imagem pode ser particionada em ou codificada com o uso de uma ou mais fatias (tipicamente não sobrepostas), e cada fatia pode compreender um ou mais blocos (por exemplo, CTUs) ou um ou mais grupos de blocos (por exemplo, tiles (H.265/HEVC e VVC) ou bricks (VVC)).
[0117] As modalidades do codificador de vídeo 20, conforme mostrado na Figura 2, podem ser configuradas, ainda, para particionar e/ou codificar a imagem usando-se fatias/grupos tile (também denominados grupos tile de vídeo) e/ou tiles (também denominados tiles de vídeo), em que uma imagem pode ser particionada em ou codificada usando uma ou mais fatias/grupos de tile (tipicamente não sobrepostos), e cada fatia/grupo de tile pode compreender, por exemplo, um ou mais blocos (por exemplo, CTUs) ou um ou mais tiles, em que cada tile, por exemplo, pode ter formato retangular e pode compreender um ou mais blocos (por exemplo, CTUs), por exemplo, blocos completos ou fracionados.
[0118] Cálculo Residual
[0119] A unidade de cálculo residual 204 pode ser configurada para calcular um bloco residual 205 (também denominado resíduo 205) com base no bloco de imagem 203 e em um bloco de predição 265 (mais detalhes sobre o bloco de predição 265 são fornecidos posteriormente), por exemplo, subtraindo- se valores de amostra do bloco de predição 265 de 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.
[0120] Transformada
[0121] A unidade de processamento de transformada 206 pode ser 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 denominados coeficientes residuais de transformada e representam o bloco residual 205 no domínio de transformada.
[0122] A unidade de processamento de transformada 206 pode ser configurada para aplicar aproximações de número inteiro de DCT/DST, tais como as transformadas especificadas para H.265/HEVC. Quando comparado a uma transformada de DCT ortogonal, tais aproximações de número inteiro são tipicamente escalonadas por um determinado fator. A fim de preservar a norma do bloco residual que é processado por transformadas direta e inversa, fatores de escala adicionais são aplicados como parte do processo de transformada. Os fatores de escala são tipicamente escolhidos com base em determinadas restrições, tais como fatores de escala sendo uma potência de dois para operações de desvio, profundidade de bit dos coeficientes de transformada, dilema entre acurácia e custos de implantação, etc. Os fatores de escala específicos são, por exemplo, especificados para a transformada inversa, por exemplo, pela unidade de processamento de transformada inversa 212 (e a transformada inversa correspondente, por exemplo, pela unidade de processamento de transformada inversa 312 no decodificador de vídeo 30) e fatores de escala correspondentes para a transformada direta, por exemplo, pela unidade de processamento de transformada 206, em um codificador 20 podem ser especificados em conformidade.
[0123] As modalidades do codificador de vídeo 20 (respectivamente unidade de processamento de transformada 206) podem ser configuradas para emitir parâmetros de transformada, por exemplo, um tipo de transformada ou transformadas, por exemplo, diretamente ou codificados ou comprimidos através da unidade de codificação de entropia 270, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e usar os parâmetros de transformada para decodificação.
[0124] Quantização
[0125] A unidade de quantização 208 pode ser configurada para quantizar os coeficientes de transformada 207 para obter coeficientes quantizados 209, por exemplo, aplicando-se quantização escalar ou quantização vetorial. Os coeficientes quantizados 209 também podem ser denominados coeficientes de transformada quantizados 209 ou coeficientes residuais quantizados 209.
[0126] O processo de quantização pode reduzir a profundidade de bit 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 quantização, em que n é maior do que m. O grau de quantização pode ser modificado ajustando-se um parâmetro de quantização (QP). Por exemplo, para quantização escalar, diferentes escalas podem ser aplicadas para alcançar quantização mais fina ou mais grosseira. Os tamanhos de etapa de quantização menores correspondem à quantização mais fina, enquanto tamanhos de etapa de quantização maiores correspondem à quantização mais grosseira. O tamanho de 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 etapa de quantização aplicáveis. Por exemplo, parâmetros de quantização pequenos podem corresponder à quantização fina (tamanhos de etapa de quantização pequenos) e parâmetros de quantização grandes podem corresponder à quantização grosseira (tamanhos de etapa de quantização grandes) ou vice-versa. A quantização pode incluir divisão por um tamanho de etapa de quantização e uma quantização inversa correspondente, por exemplo, pela unidade de quantização inversa 210, pode incluir multiplicação pelo tamanho de 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 de etapa de quantização. De modo geral, o tamanho de 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. Os fatores de escala adicionais podem ser introduzidos para quantização e desquantização para restaurar a norma do bloco residual, que pode se modificar devido à escala usada na aproximação de ponto fixo da equação para tamanho de etapa de quantização e parâmetro de quantização. Em uma implantação exemplificativa, a escala da transformada inversa e desquantização pode ser combinada. De modo alternativo, tabelas de quantização personalizadas podem ser usadas e sinalizadas a partir de um codificador para um decodificador, por exemplo, em um fluxo de bits. A quantização é uma operação com perda de dados, em que a perda aumenta com tamanhos de etapa de quantização crescentes.
[0127] As modalidades do codificador de vídeo 20 (respectivamente unidade de quantização 208) podem ser configuradas para emitir parâmetros de quantização (QP), por exemplo, diretamente ou codificados por meio da unidade de codificação de entropia 270, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e aplicar os parâmetros de quantização para decodificação.
[0128] Quantização Inversa
[0129] 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-se o inverso do esquema de quantização aplicado pela unidade de quantização 208 com base em ou com o uso do mesmo tamanho de etapa de quantização que a unidade de quantização 208. Os coeficientes desquantizados 211 também podem ser denominados coeficientes residuais desquantizados 211 e correspondem - embora tipicamente não idênticos aos coeficientes de transformada devido à perda por quantização - aos coeficientes de transformada
207.
[0130] Transformada Inversa
[0131] 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 inversa discreta de cosseno (DCT) ou transformada inversa discreta de seno (DST) ou outras transformadas inversas, para obter um bloco residual reconstruído 213 (ou coeficientes desquantizados correspondentes 213) no domínio de amostra. O bloco residual reconstruído 213 também pode ser denominado bloco de transformada 213.
[0132] Reconstrução
[0133] A unidade de reconstrução 214 (por exemplo, adicionador ou somador 214) é configurada para adicionar o bloco de transformada 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-se – amostra por amostra - os valores de amostra do bloco residual reconstruído 213 e os valores de amostra do bloco predição 265.
[0134] Filtragem
[0135] A unidade de filtro loop 220 (ou “filtro loop” 220, a título de concisão), é configurada para filtrar o bloco reconstruído 215 para obter um bloco filtrado 221 ou, em geral, para filtrar amostras reconstruídas para obter valores de amostra filtrada. A unidade de filtro loop é, por exemplo, configurada para suavizar transições de pixel ou, de outro modo, aperfeiçoar a qualidade de vídeo. A unidade de filtro loop 220 pode compreender um ou mais filtros de loop, tais como um filtro de desblocagem, um filtro de deslocamento adaptativo de amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro loop adaptativo (ALF), um filtro de supressão de ruído (NSF) ou qualquer combinação dos mesmos. Em um exemplo, a unidade de filtro loop 220 pode compreender um filtro de desblocagem, um filtro SAO e um filtro ALF. A ordem do processo de filtragem pode ser o filtro de desblocagem, SAO e ALF. Em outro exemplo, um processo denominado o mapeamento de luma com escala croma (LMCS) (a saber, o remodelador em loop adaptativo) é adicionado. Esse processo é realizado antes de desblocagem. Em outro exemplo, o processo de filtro de desblocagem também pode ser aplicado a bordas de sub-bloco internas, por exemplo, bordas de sub-blocos afim, bordas de sub-blocos ATMVP, bordas de transformada de sub-bloco (SBT) e bordas de subpartição intra (ISP).
[0136] Para remover, de modo eficaz, artefatos de blocagem que ocorrem em “blocos” grandes, a Codificação de Vídeo Versátil (VVC) usa um filtro de desblocagem tap mais longo. Na presente invenção, o termo “blocos” é usado em um sentido muito genérico e pode se referir a um “bloco de transformada (TB), bloco de predição (PB) ou uma unidade de codificação (CU)”. O filtro tap mais longo para os componentes Luma modifica um máximo de 7 amostras para cada linha de amostras perpendiculares e adjacentes à borda e é aplicado para blocos cujo tamanho é >=32 amostras na direção de desblocagem, isto é, para bordas verticais, a largura de bloco deve ser >=32 amostras e para bordas horizontais, a altura de bloco deve ser >=32 amostras.
[0137] O filtro tap mais longo para os componentes croma é aplicado para blocos de croma quando ambos os blocos de croma adjacentes a uma determinada borda têm um tamanho >=8 amostras e modifica um máximo de três amostras em qualquer lado da borda. Portanto, para bordas verticais, a largura de bloco de ambos os blocos de croma adjacentes à borda deve ser >=8 amostras e para as bordas horizontais, a altura de bloco de ambos os blocos adjacentes à borda deve ser >=8 amostras.
[0138] O texto de especificação de desblocagem em VVC 6.0 é anexado abaixo:
[0139] Processo de filtro de desblocagem
[0140] 8.8.3.1 Geral
[0141] Entradas para esse processo são a imagem reconstruída antes de desblocagem, isto é, o arranjo recPictureL e, quando ChromaArrayType não é igual a 0, os arranjos recPictureCb e recPictureCr.
[0142] Saídas desse processo são a imagem reconstruída modificada após desblocagem, isto é, o arranjo recPictureL e, quando ChromaArrayType não é igual a 0, os arranjos recPictureCb e recPictureCr.
[0143] As bordas verticais em uma imagem são filtradas primeiro. Então, as bordas horizontais em uma imagem são filtradas com amostras modificadas pelo processo de filtragem de borda vertical como entrada. As bordas verticais e horizontais nos CTBs de cada CTU são processadas separadamente com base em uma unidade de codificação. As bordas verticais dos blocos de codificação em uma unidade de codificação são filtradas iniciando com a borda no lado esquerdo dos blocos de codificação prosseguindo pelas bordas em direção ao lado direito dos blocos de codificação em sua ordem geométrica. As bordas horizontais dos blocos de codificação em uma unidade de codificação são filtradas iniciando com a borda no topo dos blocos de codificação prosseguindo pelas bordas em direção à parte inferior dos blocos de codificação em sua ordem geométrica.
[0144] NOTA – Embora o processo de filtragem seja especificado com base em uma imagem neste relatório descritivo, o processo de filtragem pode ser implantado com base em uma unidade de codificação com um resultado equivalente, desde que o decodificador siga de maneira apropriada a ordem de dependência de processamento de modo a produzir os mesmos valores de saída.
[0145] O processo de filtro de desblocagem é aplicado a todas as bordas de sub-bloco de codificação e bordas de bloco de transformada de uma imagem, exceto os seguintes tipos de bordas: – Bordas que estão na fronteira da imagem, – Bordas que coincidem com as fronteiras de uma subimagem para a qual loop_filter_across_subpic_enabled_flag[ SubPicIdx ] é igual a 0,
– Bordas que coincidem com as fronteiras virtuais da imagem quando pps_loop_filter_across_virtual_boundaries_disabled_flag é igual a 1, – Bordas que coincidem com fronteiras de brick quando loop_filter_across_bricks_enabled_flag é igual a 0, – Bordas que coincidem com fronteiras de fatia quando loop_filter_across_slices_enabled_flag é igual a 0, – Bordas que coincidem com fronteiras superior ou esquerda de fatias com slice_deblocking_filter_disabled_flag igual a 1, – Bordas dentro de fatias com slice_deblocking_filter_disabled_flag igual a 1, – Bordas que não correspondem a fronteiras de grade de amostra 4x4 do componente luma, – Bordas que não correspondem a fronteiras de grade de amostra 8x8 do componente croma, – Bordas dentro do componente luma para o qual os dois lados da borda têm intra_bdpcm_flag igual a 1, – Bordas de sub-blocos de croma que não são bordas da unidade de transformada associada.
[0146] O tipo de borda, vertical ou horizontal, é representado pela variável edgeType conforme especificado na Tabela 8-17. Tabela 8-17 – Nome de associação a edgeType edgeType Nome de edgeType 0 (borda vertical) EDGE_VER 1 (borda horizontal) EDGE_HOR
[0147] Quando slice_deblocking_filter_disabled_flag da fatia atual é igual a 0, o seguinte se aplica: – A variável treeType é definida como igual a DUAL_TREE_LUMA. – As bordas verticais são filtradas invocando-se o processo de filtro de desblocagem para uma direção, conforme especificado na cláusula 8.8.3.2, com a variável treeType, a imagem reconstruída antes de desblocagem, isto é, o arranjo recPictureL e a variável edgeType definida como igual a EDGE_VER como entradas, e a imagem reconstruída modificada após desblocagem, isto é, o arranjo recPictureL como saídas. – A borda horizontal são filtradas invocando-se o processo de filtro de desblocagem para uma direção, conforme especificado na cláusula 8.8.3.2, com a variável treeType, a imagem reconstruída modificada após desblocagem, isto é, o arranjo recPictureL e a variável edgeType definida como igual a EDGE_HOR como entradas, e a imagem reconstruída modificada após desblocagem, isto é, o arranjo recPictureL como saídas.
[0148] Quando ChromaArrayType não é igual a 0, o seguinte se aplica: – A variável treeType é definida como igual a DUAL_TREE_CHROMA – As bordas verticais são filtradas invocando-se o processo de filtro de desblocagem para uma direção, conforme especificado na cláusula 8.8.3.2, com a variável treeType, a imagem reconstruída antes de desblocagem, isto é, os arranjos recPictureCb e recPictureCr, e a variável edgeType definida como igual a EDGE_VER como entradas, e a imagem reconstruída modificada após desblocagem, isto é, os arranjos recPictureCb e recPictureCr como saídas. – A borda horizontal são filtradas invocando-se o processo de filtro de desblocagem para uma direção, conforme especificado na cláusula 8.8.3.2, com a variável treeType, a imagem reconstruída modificada após desblocagem, isto é, os arranjos recPictureCb e recPictureCr, e a variável edgeType definida como igual a EDGE_HOR como entradas, e a imagem reconstruída modificada após desblocagem, isto é, os arranjos recPictureCb e recPictureCr como saídas.
[0149] 8.8.3.2 Processo de filtro de desblocagem para uma direção
[0150] Entradas para esse processo são: – a variável treeType que especifica se os componentes luma (DUAL_TREE_LUMA) ou croma (DUAL_TREE_CHROMA) são atualmente processados, – quando treeType é igual a DUAL_TREE_LUMA, a imagem reconstruída antes de desblocagem, isto é, o arranjo recPictureL, – quando ChromaArrayType não é igual a 0 e treeType é igual a DUAL_TREE_CHROMA, os arranjos recPictureCb e recPictureCr, – uma variável edgeType que especifica se uma borda vertical (EDGE_VER) ou horizontal (EDGE_HOR) é filtrada.
[0151] Saídas desse processo são a imagem reconstruída modificada após desblocagem, isto é: – quando treeType é igual a DUAL_TREE_LUMA, o arranjo recPictureL, – quando ChromaArrayType não é igual a 0 e treeType é igual a DUAL_TREE_CHROMA, os arranjos recPictureCb e recPictureCr.
[0152] As variáveis firstCompIdx e lastCompIdx são derivadas da seguinte maneira: firstCompIdx = ( treeType = = DUAL_TREE_CHROMA ) ? 1 : 0 (8-1022) lastCompIdx = ( treeType == DUAL_TREE_LUMA || ChromaArrayType = = 0 ) ? 0 : 2 (8-1023)
[0153] Para cada unidade de codificação e cada bloco de codificação por componente de cor de uma unidade de codificação indicada pelo índice de componente de cor cIdx na faixa de firstCompIdx a lastCompIdx, inclusive, com largura de bloco de codificação nCbW, altura de bloco de codificação nCbH e localização de amostra topo-esquerda do bloco de codificação ( xCb, yCb ), quando cIdx é igual a 0, ou quando cIdx não é igual a 0 e edgeType é igual a EDGE_VER e xCb % 8 é igual a 0, ou quando cIdx não é igual a 0 e edgeType é igual a EDGE_HOR e yCb % 8 é igual a 0, as bordas são filtradas pelas seguintes etapas ordenadas:
[0154] A variável filterEdgeFlag é derivada da seguinte maneira: – Se edgeType for igual a EDGE_VER e uma ou mais dentre as condições a seguir forem verdadeiras, filterEdgeFlag é definido como igual a 0: – A fronteira esquerda do bloco de codificação atual é a fronteira esquerda da imagem. – A fronteira esquerda do bloco de codificação atual é a fronteira esquerda ou direita da subimagem e loop_filter_across_subpic_enabled_flag[ SubPicIdx ] é igual a 0. – A fronteira esquerda do bloco de codificação atual é a fronteira esquerda do brick e loop_filter_across_bricks_enabled_flag é igual a 0. – A fronteira esquerda do bloco de codificação atual é a fronteira esquerda da fatia e loop_filter_across_slices_enabled_flag é igual a 0. – A fronteira esquerda do bloco de codificação atual é uma dentre as fronteiras virtuais verticais da imagem e pps_loop_filter_across_virtual_boundaries_disabled_flag é igual a 1. – De outro modo, se edgeType for igual a EDGE_HOR e uma ou mais dentre as condições a seguir forem verdadeiras, a variável filterEdgeFlag é definida como igual a 0: – A fronteira de topo do bloco de codificação de luma atual é a fronteira de topo da imagem. – A fronteira de topo do bloco de codificação atual é a fronteira de topo ou inferior da subimagem e loop_filter_across_subpic_enabled_flag[ SubPicIdx ] é igual a 0. – A fronteira de topo do bloco de codificação atual é a fronteira de topo do brick e loop_filter_across_bricks_enabled_flag é igual a 0. – A fronteira de topo do bloco de codificação atual é a fronteira de topo da fatia e loop_filter_across_slices_enabled_flag é igual a 0. – A fronteira de topo do bloco de codificação atual é uma dentre as fronteiras virtuais horizontais da imagem e pps_loop_filter_across_virtual_boundaries_disabled_flag é igual a 1. – De outro modo, filterEdgeFlag é definido como igual a 1.
[0155] Todos os elementos do arranjo bidimensional (nCbW)x(nCbH) edgeFlags, maxFilterLengthQs e maxFilterlengthPs são inicializados para serem iguais a zero.
[0156] O processo de derivação de fronteira de bloco de transformada, especificado na cláusula 8.8.3.3, é invocado com a localização ( xCb, yCb ), a largura de bloco de codificação nCbW, a altura de bloco de codificação nCbH, a variável cIdx, a variável filterEdgeFlag, o arranjo edgeFlags, os arranjos de comprimento máximo de filtro maxFilterLengthPs e maxFilterLengthQs, e a variável edgeType como entradas, e o arranjo modificado edgeFlags, os arranjos de comprimento máximo de filtro modificados maxFilterLengthPs e maxFilterLengthQs como saídas.
[0157] Quando cIdx é igual a 0, o processo de derivação de fronteira de sub-bloco de codificação, especificado na cláusula 8.8.3.4, é invocado com a localização ( xCb, yCb ), a largura de bloco de codificação nCbW, a altura de bloco de codificação nCbH, o arranjo edgeFlags, os arranjos de comprimento máximo de filtro maxFilterLengthPs e maxFilterLengthQs, e a variável edgeType como entradas, e o arranjo modificado edgeFlags, os arranjos de comprimento máximo de filtro modificados maxFilterLengthPs e maxFilterLengthQs como saídas.
[0158] O arranjo de amostra de imagem recPicture é derivado da seguinte maneira: – Se cIdx for igual a 0, recPicture é definido como igual ao arranjo de amostra de imagem luma reconstruída antes de desblocagem recPictureL. – De outro modo, se cIdx for igual a 1, recPicture é definido como igual ao arranjo de amostra de imagem croma reconstruída antes de desblocagem de recPictureCb. – De outro modo (cIdx é igual a 2), recPicture é definido como igual ao arranjo de amostra de imagem croma reconstruída antes de desblocagem de recPictureCr.
[0159] O processo de derivação da intensidade de filtragem de fronteira, especificado na cláusula 8.8.3.5, é invocado com o arranjo de amostra de imagem recPicture, a localização luma ( xCb, yCb ), a largura de bloco de codificação nCbW, a altura de bloco de codificação nCbH, a variável edgeType, a variável cIdx, e o arranjo edgeFlags como entradas, e um arranjo (nCbW)x(nCbH) bS como saída.
[0160] O processo de filtragem de borda para uma direção é invocado para um bloco de codificação, conforme especificado na cláusula 8.8.3.6, com a variável edgeType, a variável cIdx, a imagem reconstruída antes de desblocagem de recPicture, a localização ( xCb, yCb ), a largura de bloco de codificação nCbW, a altura de bloco de codificação nCbH, e os arranjos bS, maxFilterLengthPs e maxFilterLengthQs, como entradas, e a imagem reconstruída modificada recPicture como saída.
[0161] 8.8.3.3 Processo de derivação de fronteira de bloco de transformada
[0162] Entradas para esse processo são: – uma localização ( xCb, yCb ) que especifica a amostra topo- esquerda do bloco de codificação atual em relação à amostra topo-esquerda da imagem atual, – uma variável nCbW que especifica a largura do bloco de codificação atual,
– uma variável nCbH que especifica a altura do bloco de codificação atual, – uma variável cIdx que especifica o componente de cor do bloco de codificação atual, – uma variável filterEdgeFlag, – um arranjo bidimensional (nCbW)x(nCbH) edgeFlags, – arranjos bidimensionais (nCbW)x(nCbH) maxFilterLengthQs e maxFilterLengthPs, – uma variável edgeType que especifica se uma borda vertical (EDGE_VER) ou horizontal (EDGE_HOR) é filtrada.
[0163] Saídas desse processo são: – o arranjo bidimensional modificado (nCbW)x(nCbH) edgeFlags, – os arranjos bidimensionais modificados (nCbW)x(nCbH) maxFilterLengthQs, maxFilterLengthPs.
[0164] Dependendo de edgeType, os arranjos edgeFlags, maxFilterLengthPs e maxFilterLengthQs são derivados da seguinte maneira: – A variável gridSize é definida da seguinte maneira: gridSize = cIdx = = 0 ? 4 : 8 (8-1024) – Se edgeType for igual a EDGE_VER, o seguinte se aplica: – A variável numEdges é definida como igual a Max( 1, nCbW / gridSize ). – Para xEdge = 0..numEdges − 1 e y = 0..nCbH − 1, o seguinte se aplica: – A posição horizontal x dentro do bloco de codificação atual é definida como igual a xEdge * gridSize. – O valor de edgeFlags[ x ][ y ] é derivado da seguinte maneira: − Se pps_loop_filter_across_virtual_boundaries_disabled_flag for igual a 1 e ( xCb + x ) for igual a PpsVirtualBoundariesPosX[ n ] para qualquer n = 0..pps_num_ver_virtual_boundaries − 1, edgeFlags[ x ][ y ] é definido como igual a 0. − De outro modo, se x for igual a 0, edgeFlags[ x ][ y ] é definido como igual a filterEdgeFlag. − De outro modo, se a localização ( xCb + x , yCb + y ) for em uma borda de bloco de transformada, edgeFlags[ x ][ y ] é definido como igual a 1.
– Quando edgeFlags[ x ][ y ] é igual a 1, o seguinte se aplica: − Se cIdx for igual a 0, o seguinte se aplica: − O valor de maxFilterLengthQs[ x ][ y ] é derivado da seguinte maneira: − Se a largura em amostras de luma do bloco de transformada em localização luma ( xCb + x, yCb + y ) for igual a ou menor do que 4 ou a largura em amostras de luma do bloco de transformada em localização luma ( xCb + x − 1, yCb + y ) for igual a ou menor do que 4, maxFilterLengthQs[ x ][ y ] é definido como igual a 1. − De outro modo, se a largura em amostras de luma do bloco de transformada em localização luma ( xCb + x, yCb + y ) for igual a ou maior do que 32, maxFilterLengthQs[ x ][ y ] é definido como igual a 7. − De outro modo, maxFilterLengthQs[ x ][ y ] é definido como igual a 3. − O valor de maxFilterLengthPs[ x ][ y ] é derivado da seguinte maneira: − Se a largura em amostras de luma do bloco de transformada em localização luma ( xCb + x, yCb + y ) for igual a ou menor do que 4 ou a largura em amostras de luma do bloco de transformada em localização luma ( xCb + x − 1, yCb + y ) for igual a ou menor do que 4 , maxFilterLengthPs[ x ][ y ] é definido como igual a 1. − De outro modo, se a largura em amostras de luma do bloco de transformada em localização luma ( xCb + x − 1, yCb + y ) for igual a ou maior do que 32, maxFilterLengthPs[ x ][ y ] é definido como igual a 7. − De outro modo, maxFilterLengthPs[ x ][ y ] é definido como igual a 3. − De outro modo (cIdx não é igual a 0), os valores de maxFilterLengthPs[ x][ y ] e maxFilterLengthQs[ x ][ y ] são derivados da seguinte maneira: − Se a largura em amostras de croma do bloco de transformada em localização croma ( xCb + x, yCb + y ) e a largura em localização croma ( xCb + x − 1, yCb + y ) forem ambas iguais a ou maiores do que 8, maxFilterLengthPs[ x ][ y ] e maxFilterLengthQs[ x ][ y ] são definidos como iguais a 3. − De outro modo, maxFilterLengthPs[ x ][ y ] e maxFilterLengthQs[ x ][ y ] são definidos como iguais a 1. – De outro modo, (edgeType é igual a EDGE_HOR), o seguinte se aplica: – A variável numEdges é definida como igual a Max( 1, nCbH / gridSize ). – Para yEdge = 0..numEdges − 1 e x = 0..nCbW − 1, o seguinte se aplica: – A posição vertical y dentro do bloco de codificação atual é definida como igual a yEdge * gridSize. – O valor de edgeFlags[ x ][ y ] é derivado da seguinte maneira: − Se pps_loop_filter_across_virtual_boundaries_disabled_flag igual a 1 e ( yCb + y ) for igual a PpsVirtualBoundariesPosY[ n ] para qualquer n = 0..pps_num_hor_virtual_boundaries − 1, edgeFlags[ x ][ y ] é definido como igual a 0. − De outro modo, se y for igual a 0, edgeFlags[ x ][ y ] é definido como igual a filterEdgeFlag. − De outro modo, se a localização ( xCb + x , yCb + y ) estiver em uma borda de bloco de transformada, edgeFlags[ x ][ y ] é definido como igual a
1. – Quando edgeFlags[ x ][ y ] é igual a 1, o seguinte se aplica: − Se cIdx for igual a 0, o seguinte se aplica: − O valor de maxFilterLengthQs[ x ][ y ] é derivado da seguinte maneira: − Se a altura em amostras de luma do bloco de transformada em localização luma ( xCb + x, yCb + y ) for igual a ou menor do que 4 ou a altura em amostras de luma do bloco de transformada em localização luma ( xCb + x, yCb + y − 1 ) for igual a ou menor do que 4, maxFilterLengthQs[ x ][ y ] é definido como igual a 1. − De outro modo, se a altura em amostras de luma do bloco de transformada em localização luma ( xCb + x, yCb + y ) for igual a ou maior do que 32, maxFilterLengthQs[ x ][ y ] é definido como igual a 7.
− De outro modo, maxFilterLengthQs[ x ][ y ] é definido como igual a 3. − O valor de maxFilterLengthPs[ x ][ y ] é derivado da seguinte maneira: − Se a altura em amostras de luma do bloco de transformada em localização luma ( xCb + x, yCb + y ) for igual a ou menor do que 4 ou a altura em amostras de luma do bloco de transformada em localização luma ( xCb + x, yCb + y − 1 ) for igual a ou menor do que 4, maxFilterLengthPs[ x ][ y ] é definido como igual a 1. − De outro modo, se a altura em amostras de luma do bloco de transformada em localização luma ( xCb + x, yCb + y − 1 ) for igual a ou maior do que 32, maxFilterLengthPs[ x ][ y ] é definido como igual a 7. − De outro modo, maxFilterLengthPs[ x ][ y ] é definido como igual a 3. − De outro modo (cIdx não é igual a 0), os valores de maxFilterLengthPs[ x][ y ] e maxFilterLengthQs[ x ][ y ] são derivados da seguinte maneira: − Se todas as condições a seguir forem verdadeiras, maxFilterLengthPs[ x ][ y ] e maxFilterLengthQs[ x ][ y ] são definidos como iguais a 3: − A altura em amostras de croma do bloco de transformada em localização croma ( xCb + x, yCb + y ) e a altura em localização croma ( xCb + x, yCb + y − 1 ) são ambas iguais a ou maiores do que 8. − ( yCb + y ) % CtbHeightC é maior do que 0, isto é, a borda horizontal não se sobrepõe à fronteira CTB croma superior. − De outro modo, maxFilterLengthPs[ x ][ y ] e maxFilterLengthQs[ x ][ y ] são definidos como iguais a 1.
[0165] 8.8.3.4 Processo de derivação de fronteira de sub-bloco de codificação
[0166] Entradas para esse processo são: – uma localização ( xCb, yCb ) que especifica a amostra topo- esquerda do bloco de codificação atual em relação à amostra topo-esquerda da imagem atual,
– uma variável nCbW que especifica a largura do bloco de codificação atual, – uma variável nCbH que especifica a altura do bloco de codificação atual, – um arranjo bidimensional (nCbW)x(nCbH) edgeFlags, – arranjos bidimensionais (nCbW)x(nCbH) maxFilterLengthQs e maxFilterLengthPs, – uma variável edgeType que especifica se uma borda vertical (EDGE_VER) ou horizontal (EDGE_HOR) é filtrada.
[0167] Saídas desse processo são: – o arranjo bidimensional modificado (nCbW)x(nCbH) edgeFlags, – os arranjos bidimensionais modificados (nCbW)x(nCbH) maxFilterLengthQs e maxFilterLengthPs.
[0168] O número de sub-bloco de codificação na direção horizontal numSbX e na direção vertical numSbY é derivado da seguinte maneira: – Se inter_affine_flag[ xCb ][ yCb ] for igual a 1 ou merge_subblock_flag[ xCb ][ yCb ] for igual a 1, numSbX e numSbY são definidos como iguais a NumSbX[ xCb ][ yCb ] e NumSbY[ xCb ][ yCb ], respectivamente. – De outro modo, numSbX e numSbY são ambos definidos como iguais a 1.
[0169] Dependendo do valor de edgeType, o seguinte se aplica: – Se edgeType for igual a EDGE_VER, o seguinte se aplica: – A variável sbW é definida como igual a Max( 8, nCbW / numSbX ). – O arranjo edgeTbFlags é definido como igual a edgeFlags. – Para xEdge = 0..min( ( nCbW / 8 ) − 1, numSbX − 1), y = 0..nCbH − 1: – A posição horizontal x dentro do bloco de codificação atual é definida como igual a xEdge *sbW. – O valor de edgeFlags[ x ][ y ] é derivado da seguinte maneira: – Se pps_loop_filter_across_virtual_boundaries_disabled_flag for igual a 1 e x for igual a PpsVirtualBoundariesPosX[ n ] para qualquer n = 0..pps_num_ver_virtual_boundaries − 1, o seguinte se aplica:
edgeFlags[ x ][ y ] = 0 (8-1025) – De outro modo, o seguinte se aplica: edgeFlags[ x ][ y ] = 1 (8-1026) – Quando edgeFlags[ x ][ y ] é igual a 1, os valores de maxFilterLengthPs[ x ][ y ] e maxFilterLengthQs[ x ][ y ] são modificados da seguinte maneira: – Se x for igual a 0, o seguinte se aplica: – Quando numSbX é maior do que 1, o seguinte se aplica: maxFilterLengthQs[ x ][ y ] = Min( 5, maxFilterLengthQs[ x ][ y ] ) (8-1027) – Quando inter_affine_flag[ xCb − 1 ][ yCb ] é igual a 1 ou merge_subblock_flag[ xCb − 1 ][ yCb ] é igual a 1, o seguinte se aplica: maxFilterLengthPs[ x ][ y ] = Min( 5, maxFilterLengthPs[ x ][ y ] ) (8-1028) – De outro modo, se edgeTbFlags[ x ][ y ] for igual a 1, o seguinte se aplica: maxFilterLengthPs[ x ][ y ] = Min( 5, maxFilterLengthPs[ x ][ y ] ) (8-1029) maxFilterLengthQs[ x ][ y ] = Min( 5, maxFilterLengthQs[ x ][ y ] ) (8-1030) – De outro modo, se uma ou mais dentre as seguintes condições forem verdadeiras: – ( x + 4 ) é maior do que ou igual a nCbW, – edgeTbFlags[ x − 4 ][ y ] é igual a 1, – edgeTbFlags[ x + 4 ][ y ] é igual a 1, o seguinte se aplica: maxFilterLengthPs[ x ][ y ] = 1 (8-1031) maxFilterLengthQs[ x ][ y ] = 1 (8-1032) – De outro modo, se uma ou mais dentre as seguintes condições forem verdadeiras: – xEdge é igual a 1, – xEdge é igual a ( nCbW / 8 ) − 1, – edgeTbFlags[ x − sbW ][ y ] é igual a 1, – edgeTbFlags[ x + sbW ][ y ] é igual a 1,
o seguinte se aplica: maxFilterLengthPs[ x ][ y ] = 2 (8-1033) maxFilterLengthQs[ x ][ y ] = 2 (8-1034) – De outro modo, o seguinte se aplica: maxFilterLengthPs[ x ][ y ] = 3 (8-1035) maxFilterLengthQs[ x ][ y ] = 3 (8-1036) – De outro modo, se edgeType for igual a EDGE_HOR, o seguinte se aplica: – A variável sbH é definida como igual a Max( 8, nCbH / numSbY ). – O arranjo edgeTbFlags é definido como igual a edgeFlags. – For yEdge = 0..min( ( nCbH / 8 ) − 1, numSbY − 1 ), x = 0..nCbW − 1: – A posição vertical y dentro do bloco de codificação atual é definida como igual a yEdge *sbH. – O valor de edgeFlags[ x ][ y ] é derivado da seguinte maneira: – Se pps_loop_filter_across_virtual_boundaries_disabled_flag for igual a 1 e y for igual a PpsVirtualBoundariesPosY[ n ] para qualquer n = 0..pps_num_hor_virtual_boundaries − 1, o seguinte se aplica: edgeFlags[ x ][ y ] = 0 (8-1037) – De outro modo, o seguinte se aplica: edgeFlags[ x ][ y ] = 1 (8-1038) – Quando edgeFlags[ x ][ y ] é igual a 1, os valores de maxFilterLengthPs[ x ][ y ] e maxFilterLengthQs[ x ][ y ] são modificados da seguinte maneira: – Se y for igual a 0 e edgeFlags[ x ][ y ] for igual a 1, o seguinte se aplica: – Quando numSbY é maior do que 1, o seguinte se aplica: maxFilterLengthQs[ x ][ y ] = Min( 5, maxFilterLengthQs[ x ][ y ] ) (8-1039) – Quando inter_affine_flag[ xCb ][ yCb − 1 ] é igual a 1 ou merge_subblock_flag[ xCb ][ yCb − 1 ] é igual a 1, o seguinte se aplica: maxFilterLengthPs[ x ][ y ] = Min( 5, maxFilterLengthPs[ x ][ y ] ) (8-1040) – De outro modo, se edgeTbFlags[ x ][ y ] for igual a 1, o seguinte se aplica: maxFilterLengthPs[ x ][ y ] = Min( 5, maxFilterLengthPs[ x ][ y ] ) (8-1041) maxFilterLengthQs[ x ][ y ] = Min( 5, maxFilterLengthQs[ x ][ y ] ) (8-1042) – De outro modo, se uma ou mais dentre as seguintes condições forem verdadeiras: – ( y + 4 ) é maior do que ou igual a nCbH, – edgeTbFlags[ x ][ y − 4 ] é igual a 1, – edgeTbFlags[ x ][ y + 4 ] é igual a 1, o seguinte se aplica: maxFilterLengthPs[ x ][ y ] = 1 (8-1045) maxFilterLengthQs[ x ][ y ] = 1 (8-1046) – De outro modo, se uma ou mais dentre as seguintes condições forem verdadeiras: – yEdge é igual a 1, – yEdge é igual a ( nCbH / 8 ) − 1, – edgeTbFlags[ x ][ y − sbH ] é igual a 1, – edgeTbFlags[ x ][ y + sbH ] é igual a 1, o seguinte se aplica: maxFilterLengthPs[ x ][ y ] = 2 (8-1043) maxFilterLengthQs[ x ][ y ] = 2 (8-1044) – De outro modo, o seguinte se aplica: maxFilterLengthPs[ x ][ y ] = 3 (8-1047) maxFilterLengthQs[ x ][ y ] = 3 (8-1048)
[0170] 8.8.3.5 Processo de derivação de intensidade de filtragem de fronteira
[0171] Entradas para esse processo são: – um arranjo de amostra de imagem recPicture, – uma localização ( xCb, yCb ) que especifica a amostra topo- esquerda do bloco de codificação atual em relação à amostra topo-esquerda da imagem atual, – uma variável nCbW que especifica a largura do bloco de codificação atual,
– uma variável nCbH que especifica a altura do bloco de codificação atual, – uma variável edgeType que especifica se uma borda vertical (EDGE_VER) ou horizontal (EDGE_HOR) é filtrada, – uma variável cIdx que especifica o componente de cor do bloco de codificação atual, – um arranjo bidimensional (nCbW)x(nCbH) edgeFlags.
[0172] Saída desse processo é um arranjo bidimensional (nCbW)x(nCbH) bS que especifica a intensidade de filtragem de fronteira.
[0173] As variáveis xDi, yDj, xN e yN são derivadas da seguinte maneira: – A variável gridSize é definida da seguinte maneira: gridSize = cIdx = = 0 ? 4 : 8 (8-1049) – Se edgeType for igual a EDGE_VER, xDi = ( i * gridSize ) (8-1050) yDj = cIdx = = 0 ? ( j << 2 ) : ( j << 1 ) (8-1051) xN é definido como igual a Max( 0, ( nCbW / gridSize ) − 1 ) (8-1052) yN = cIdx = = 0 ? ( nCbH / 4 ) − 1 : ( nCbH / 2 ) − 1 (8-1053) – De outro modo (edgeType é igual a EDGE_HOR), xDi = cIdx = = 0 ? ( i << 2 ) : ( i << 1 ) (8-1054) yDj = ( j * gridSize ) (8-1055) xN = cIdx = = 0 ? ( nCbW / 4 ) − 1 : ( nCbW / 2 ) − 1 (8-1056) yN = Max( 0, ( nCbH / gridSize ) − 1 ) (8-1057)
[0174] Para xDi com i = 0..xN e yDj com j = 0..yN, o seguinte se aplica: – Se edgeFlags[ xDi ][ yDj ] for igual a 0, a variável bS[ xDi ][ yDj ] é definida como igual a 0. – De outro modo, o seguinte se aplica: – Os valores de amostra p0 e q0 são derivados da seguinte maneira: – Se edgeType for igual a EDGE_VER, p0 é definido como igual a recPicture[ xCb + xDi − 1 ][ yCb + yDj ] e q0 é definido como igual a recPicture[ xCb + xDi ][ yCb + yDj ]. – De outro modo (edgeType é igual a EDGE_HOR), p 0 é definido como igual a recPicture[ xCb + xDi ][ yCb + yDj − 1 ] e q0 é definido como igual a recPicture[ xCb + xDi ][ yCb + yDj ]. – A variável bS[ xDi ][ yDj ] é derivada da seguinte maneira: – Se cIdx for igual a 0 e ambas as amostras p 0 e q0 estiverem em um bloco de codificação com intra_bdpcm_flag igual a 1, bS[ xDi ][ yDj ] é definido como igual a 0. – De outro modo, se a amostra p0 ou q0 estiver no bloco de codificação de uma unidade de codificação codificada com modo de predição intra, bS[ xDi ][ yDj ] é definido como igual a 2. – De outro modo, se a borda de bloco também for uma borda de bloco de transformada e a amostra p 0 ou q0 estiver em um bloco de codificação com ciip_flag igual a 1, bS[ xDi ][ yDj ] é definido como igual a 2. – De outro modo, se a borda de bloco também for uma borda de bloco de transformada e a amostra p0 ou q0 estiver em um bloco de transformada que contém um ou mais níveis de coeficiente de transformada diferentes de zero, bS[ xDi ][ yDj ] é definido como igual a 1. – De outro modo, se a borda de bloco também for uma borda de bloco de transformada, cIdx for maior do que 0, e a amostra p 0 ou q0 estiver em uma unidade de transformada com tu_joint_cbcr_residual_flag igual a 1, bS[ xDi ][ yDj ] é definido como igual a 1. – De outro modo, se o modo de predição do sub-bloco de codificação contendo a amostra p 0 for diferente do modo de predição do sub- bloco de codificação contendo a amostra q 0 (isto é, um dentre o sub-bloco de codificação é codificado em modo de predição IBC e o outro é codificado em modo de predição inter), bS[ xDi ][ yDj ] é definido como igual a 1. – De outro modo, se cIdx for igual a 0 e uma ou mais dentre as condições a seguir forem verdadeiras, bS[ xDi ][ yDj ] é definido como igual a 1: – O sub-bloco de codificação contendo a amostra p0 e o sub-bloco de codificação contendo a amostra q 0 são ambos codificados em modo de predição IBC, e a diferença absoluta entre o componente horizontal ou vertical dos vetores de bloco usados na predição dos dois sub-blocos de codificação é maior do que ou igual a 8 em unidades de 1/16 amostras de luma. – Para a predição do sub-bloco de codificação contendo a amostra p0, diferentes imagens de referência ou um número diferente de vetores de movimento são usados em relação à predição do sub-bloco de codificação contendo a amostra q0. NOTA 1 – A determinação de que as imagens de referência usadas para os dois sub-blocos de codificação são iguais ou diferentes se baseia apenas em quais imagens são referenciadas, sem considerar se uma predição é formada usando um índice em lista de imagem de referência 0 ou um índice em lista de imagem de referência 1, e também sem considerar se a posição de índice dentro de uma lista de imagem de referência é diferente.
NOTA 2 – O número de vetores de movimento que são usados para a predição de um sub-bloco de codificação com amostra topo-esquerda abrangendo ( xSb, ySb ), é igual a PredFlagL0[ xSb ][ ySb ] + PredFlagL1[ xSb ][ ySb ]. – Um vetor de movimento é usado para predizer o sub-bloco de codificação contendo a amostra p0 e um vetor de movimento é usado para predizer o sub-bloco de codificação contendo a amostra q0, e a diferença absoluta entre o componente horizontal ou vertical dos vetores de movimento usados é maior do que ou igual a 8 em unidades de 1/16 amostras de luma. – Dois vetores de movimento e duas imagens de referência diferentes são usados para predizer o sub-bloco de codificação contendo a amostra p0, dois vetores de movimento para as mesmas duas imagens de referência são usados para predizer o sub-bloco de codificação contendo a amostra q0 e a diferença absoluta entre o componente horizontal ou vertical dos dois vetores de movimento usados na predição dos dois sub-blocos de codificação para a mesma imagem de referência é maior do que ou igual a 8 em unidades de 1/16 amostras de luma. – Dois vetores de movimento para a mesma imagem de referência são usados para predizer o sub-bloco de codificação contendo a amostra p 0, dois vetores de movimento para a mesma imagem de referência são usados para predizer o sub-bloco de codificação contendo a amostra q 0 e ambas as seguintes condições são verdadeiras: – A diferença absoluta entre o componente horizontal ou vertical de vetores de movimento de lista 0 usados na predição dos dois sub-blocos de codificação é maior do que ou igual a 8 em 1/16 amostras de luma, ou a diferença absoluta entre o componente horizontal ou vertical dos vetores de movimento de lista 1 usados na predição dos dois sub-blocos de codificação é maior do que ou igual a 8 em unidades de 1/16 amostras de luma. – A diferença absoluta entre o componente horizontal ou vertical de vetor de movimento de lista 0 usado na predição do sub-bloco de codificação contendo a amostra p0 e do vetor de movimento de lista 1 usado na predição do sub-bloco de codificação contendo a amostra q0 é maior do que ou igual a 8 em unidades de 1/16 amostras de luma, ou a diferença absoluta entre o componente horizontal ou vertical do vetor de movimento de lista 1 usado na predição do sub- bloco de codificação contendo a amostra p 0 e vetor de movimento de lista 0 usado na predição do sub-bloco de codificação contendo a amostra q 0 é maior do que ou igual a 8 em unidades de 1/16 amostras de luma. – De outro modo, a variável bS[ xDi ][ yDj ] é definida como igual a
0.
[0175] 8.8.3.6 Processo de filtragem de borda para uma direção
[0176] Entradas para esse processo são: – uma variável edgeType que especifica se bordas verticais (EDGE_VER) ou bordas horizontais (EDGE_HOR) são atualmente processadas, – uma variável cIdx que especifica o componente de cor atual, – a imagem reconstruída antes de desblocagem de recPicture, – uma localização ( xCb, yCb ) que especifica a amostra topo- esquerda do bloco de codificação atual em relação à amostra topo-esquerda da imagem atual, – uma variável nCbW que especifica a largura do bloco de codificação atual, – uma variável nCbH que especifica a altura do bloco de codificação atual, – o arranjo bS que especifica a intensidade de fronteira, – os arranjos maxFilterLengthPs e maxFilterLengthQs.
[0177] Saída desse processo é a imagem reconstruída modificada após desblocagem de recPicture.
[0178] Para o processo de filtragem de borda, o seguinte se aplica: – A variável gridSize é definida da seguinte maneira: gridSize = cIdx = = 0 ? 4 : 8 (8-1058) – As variáveis subW, subH, xN, yN são derivadas da seguinte maneira:
subW = cIdx = = 0 ? 1 : SubWidthC (8-1059) subH = cIdx = = 0 ? 1 : SubHeightC (8-1060) xN = edgeType = = EDGE_VER ? Max( 0, ( nCbW / gridSize ) − 1 ) : ( nCbW / 4 / subW ) − 1 (8-1061) yN = edgeType = = EDGE_VER ? ( nCbH / 4 / subH ) − 1 : Max( 0, ( nCbH / gridSize ) − 1 ) (8-1062) – As variáveis xDk com k = 0..xN e yDm com m = 0..yN são derivadas da seguinte maneira: xDk = edgeType = = EDGE_VER ? ( k *gridSize ) : ( k << ( 2 / subW ) ) (8-1063) yDm = edgeType = = EDGE_VER ? ( m << ( 2 / subH ) ) : ( m * gridSize ) (8-1064) – Para xDk com k = 0..xN e yDm com m = 0..yN, o seguinte se aplica: – Quando bS[ xDk ][ yDm ] é maior do que 0, as seguintes etapas ordenadas se aplicam: – Se cIdx for igual a 0, o processo de filtragem para bordas no bloco de codificação de luma da unidade de codificação atual consiste nas seguintes etapas ordenadas:
1. O processo de decisão para bordas de bloco de luma, conforme especificado na cláusula 8.8.3.6.1, é invocado com o arranjo de amostra de imagem luma recPicture, a localização do bloco de codificação de luma ( xCb, yCb ), a localização luma do bloco ( xBl, yBl ) definida como igual a ( xDk, yDm ), a direção de borda edgeType, a intensidade de filtragem de fronteira bS[ xDk ][ yDm ], os comprimentos máximos de filtro maxFilterLengthP definidos como iguais a maxFilterLengthPs[ xDk ][ yDm ] e maxFilterLengthQ definido como igual a maxFilterLengthQs[ xDk ][ yDm ] como entradas, e as decisões dE, dEp e dEq, os comprimentos máximos de filtro modificado maxFilterLengthP e maxFilterLengthQ, e a variável tC como saídas.
2. O processo de filtragem para bordas de bloco, conforme especificado na cláusula 8.8.3.6.2, é invocado com o arranjo de amostra de imagem luma recPicture, a localização do bloco de codificação de luma ( xCb, yCb ), a localização luma do bloco ( xBl, yBl ) definida como igual a ( xDk, yDm ), a direção de borda edgeType, as decisões dE, dEp e dEq, os comprimentos de filtro máximos maxFilterLengthP e maxFilterLengthQ, e a variável tC como entradas, e o arranjo de amostra de imagem luma modificada recPicture como saída. – De outro modo (cIdx não é igual a 0), o processo de filtragem para bordas no bloco de codificação de croma de unidade de codificação atual especificada por cIdx consiste nas seguintes etapas ordenadas:
1. A variável cQpPicOffset é derivada da seguinte maneira: cQpPicOffset = cIdx = = 1 ? pps_cb_qp_offset : pps_cr_qp_offset (8-1065)
2. O processo de decisão para bordas de bloco de croma, conforme especificado na cláusula 8.8.3.6.3, é invocado com o arranjo de amostra de imagem croma recPicture, a localização do bloco de codificação de croma ( xCb, yCb ), a localização do bloco de croma ( xBl, yBl ) definida como igual a ( xDk, yDm ), a direção de borda edgeType, a variável cIdx, a variável cQpPicOffset, a intensidade de filtragem de fronteira bS[ xDk ][ yDm ], e a variável maxFilterLengthCbCr definida como igual a maxFilterLengthPs[ xDk ][ yDm ] como entradas, e a variável modificada maxFilterLengthCbCr, e a variável t C como saídas.
3. Quando maxFilterLengthCbCr é maior do que 0, o processo de filtragem para bordas de bloco de croma, conforme especificado na cláusula 8.8.3.6.4, é invocado com o arranjo de amostra de imagem croma recPicture, a localização do bloco de codificação de croma ( xCb, yCb ), a localização croma do bloco ( xBl, yBl ) definida como igual a ( xDk, yDm ), a direção de borda edgeType, a variável maxFilterLengthCbCr, e a variável tC como entradas, e o arranjo de amostra de imagem croma modificado recPicture como saída.
[0179] 8.8.3.6.1 Processo de decisão para bordas de bloco de luma
[0180] Entradas para esse processo são: – um arranjo de amostra de imagem recPicture, – uma localização ( xCb, yCb ) que especifica a amostra topo- esquerda do bloco de codificação atual em relação à amostra topo-esquerda da imagem atual, – uma localização ( xBl, yBl ) que especifica a amostra topo-
esquerda do bloco atual em relação à amostra topo-esquerda do bloco de codificação atual, – uma variável edgeType que especifica se uma borda vertical (EDGE_VER) ou horizontal (EDGE_HOR) é filtrada, – uma variável bS que especifica a intensidade de filtragem de fronteira, – uma variável maxFilterLengthP que especifica o comprimento máx de filtro, – uma variável maxFilterLengthQ que especifica o comprimento máx de filtro.
[0181] Saídas desse processo são: – as variáveis dE, dEp e dEq contendo decisões, – as variáveis de comprimento de filtro modificadas maxFilterLengthP e maxFilterLengthQ, – a variável tC.
[0182] Os valores de amostra pi,k e qj,k com i = 0..maxFilterLengthP, j = 0..maxFilterLengthQ e k = 0 e 3 são derivados da seguinte maneira: – Se edgeType for igual a EDGE_VER, o seguinte se aplica: qj,k = recPictureL[ xCb + xBl + j ][ yCb + yBl + k ] (8-1066) pi,k = recPictureL[ xCb + xBl − i − 1 ][ yCb + yBl + k ] (8-1067) – De outro modo, (edgeType é igual a EDGE_HOR), o seguinte se aplica: qj,k = recPicture[ xCb + xBl + k ][ yCb + yBl + j ] (8-1068) pi,k = recPicture[ xCb + xBl + k ][ yCb + yBl − i − 1 ] (8-1069)
[0183] A variável qpOffset é derivada da seguinte maneira: – Se sps_ladf_enabled_flag for igual a 1, o seguinte se aplica: – A variável lumaLevel do nível luma reconstruído é derivada da seguinte maneira: lumaLevel = ( ( p0,0 + p0,3 + q0,0 + q0,3 ) >> 2 ), (8-1070) – A variável qpOffset é definida como igual a sps_ladf_lowest_interval_qp_offset e modificada da seguinte maneira: for( i = 0; i < sps_num_ladf_intervals_minus2 + 1; i++ ) { if( lumaLevel > SpsLadfIntervalLowerBound[ i + 1 ] ) qpOffset = sps_ladf_qp_offset[ i ] (8-1071)
else break } – De outro modo, qpOffset é definido como igual a 0.
[0184] As variáveis QpQ e QpP são definidas como iguais aos valores de QpY das unidades de codificação que incluem os blocos de codificação contendo a amostra q0,0 e p0,0, respectivamente. //Na presente invenção, Qp Q e QpP representam os valores de QP de luma, respectivamente, a fim de distinguir dois valores de QP de luma, será representado por QpYQ e QpYP respectivamente na parte reivindicatória//
[0185] A variável qP é derivada da seguinte maneira: qP = ( ( QpQ + QpP + 1 ) >> 1 ) + qpOffset (8-1072)
[0186] O valor da variável β′ é determinado conforme especificado na Tabela 8-18 com base no parâmetro de quantização Q derivado da seguinte maneira: Q = Clip3( 0, 63, qP + ( slice_beta_offset_div2 << 1 ) ) (8-1073) em que slice_beta_offset_div2 é o valor do elemento de sintaxe slice_beta_offset_div2 para a fatia que contém amostra q0,0.
[0187] A variável β é derivada da seguinte maneira: β = β′ * ( 1 << ( BitDepthY − 8 ) ) (8-1074)
[0188] O valor da variável tC′ é determinado conforme especificado na Tabela 8-18 com base no parâmetro de quantização Q derivado da seguinte maneira: Q = Clip3( 0, 65, qP + 2 * ( bS − 1 ) + ( slice_tc_offset_div2 << 1 ) ) (8-1075) em que slice_tc_offset_div2 é o valor do elemento de sintaxe slice_tc_offset_div2 para a fatia que contém amostra q 0,0.
[0189] A variável tC é derivada da seguinte maneira: tC = BitDepthY < 10 ? ( tC′ + 2 ) >> ( 10 − BitDepthY ) : tC′ * ( 1 << ( BitDepthY − 10 ) ) (8-1076)
[0190] As seguintes etapas ordenadas se aplicam:
1. As variáveis dp0, dp3, dq0 e dq3 são derivadas da seguinte maneira: dp0 = Abs( p2,0 − 2 * p1,0 + p0,0 ) (8-1077)
dp3 = Abs( p2,3 − 2 * p1,3 + p0,3 ) (8-1078) dq0 = Abs( q2,0 − 2 * q1,0 + q0,0 ) (8-1079) dq3 = Abs( q2,3 − 2 * q1,3 + q0,3 ) (8-1080)
2. Quando maxFilterLengthP e maxFilterLengthQ são ambos iguais a ou maiores do que 3, as variáveis sp0, sq0, spq0, sp3, sq3 e spq3 são derivadas da seguinte maneira: sp0 = Abs( p3,0 − p0,0 ) (8-1081) sq0 = Abs( q0,0 − q3,0 ) (8-1082) spq0 = Abs( p0,0 − q0,0 ) (8-1083) sp3 = Abs( p3,3 − p0,3 ) (8-1084) sq3 = Abs( q0,3 − q3,3 ) (8-1085) spq3 = Abs( p0,3 − q0,3 ) (8-1086)
3. As variáveis sidePisLargeBlk e sideQisLargeBlk são definidas como iguais a 0.
4. Quando maxFilterLengthP é maior do que 3, sidePisLargeBlk é definido como igual a 1:
5. Quando maxFilterLengthQ é maior do que 3, sideQisLargeBlk é definido como igual a 1:
6. Quando edgeType é igual a EDGE_HOR e (yCb + yBl ) % CtbSizeY é igual a 0, sidePisLargeBlk é definido como igual a 0.
7. As variáveis dSam0 e dSam3 são inicializadas para 0.
8. Quando sidePisLargeBlk ou sideQisLargeBlk é maior do que 0, o seguinte se aplica: a. As variáveis dp0L, dp3L são derivadas e maxFilterLengthP é modificado da seguinte maneira: – Se sidePisLargeBlk for igual a 1, o seguinte se aplica: dp0L = ( dp0 + Abs( p5,0 − 2 * p4,0 + p3,0 ) + 1 ) >> 1 (8-1087) dp3L = ( dp3 + Abs( p5,3 − 2 * p4,3 + p3,3 ) + 1 ) >> 1 (8-1088) – De outro modo, o seguinte se aplica: dp0L = dp0 (8-1089) dp3L = dp3 (8-1090) maxFilterLengthP = 3 (8-1091) b. As variáveis dq0L e dq3L são derivadas da seguinte maneira: – Se sideQisLargeBlk for igual a 1, o seguinte se aplica:
dq0L = ( dq0 + Abs( q5,0 − 2 * q4,0 + q3,0 ) + 1 ) >> 1 (8-1092) dq3L = ( dq3 + Abs( q5,3 − 2 * q4,3 + q3,3 ) + 1 ) >> 1 (8-1093) – De outro modo, o seguinte se aplica: dq0L = dq0 (8-1094) dq3L = dq3 (8-1095) c.
As variáveis dpq0L, dpq3L e dL são derivadas da seguinte maneira: dpq0L = dp0L + dq0L (8-1096) dpq3L = dp3L + dq3L (8-1097) dL = dpq0L + dpq3L (8-1098) d.
Quando dL é menor do que β, as seguintes etapas ordenadas se aplicam: i.
A variável dpq é definida como igual a 2 * dpq0L. ii.
A variável sp é definida como igual a sp0, a variável sq é definida como igual a sq0 e a variável spq é definida como igual a spq0. iii.
As variáveis p0 p3 qo e q3 são primeiro inicializadas para 0 e, então, modificadas de acordo com sidePisLargeBlk e sideQisLargeBlk da seguinte maneira: – Quando sidePisLargeBlk é igual a 1, o seguinte se aplica: p3 = p3,0 (8-1099) p0 = pmaxFilterLengthP,0 (8-1100) – Quando sideQisLargeBlk é igual a 1, o seguinte se aplica: q3 = q3,0 (8-1101) q0 = qmaxFilterLengthQ,0 (8-1102) iv.
Para a localização de amostra ( xCb + xBl, yCb + yBl ), o processo de decisão para uma amostra de luma, conforme especificado na cláusula 8.8.3.6.5, é invocado com os valores de amostra p 0, p3, q0, q3, as variáveis dpq, sp, sq, spq, sidePisLargeBlk, sideQisLargeBlk, β e tC como entradas, e a saída é atribuída à decisão dSam0. v.
A variável dpq é definida como igual a 2 * dpq3L. vi.
A variável sp é definida como igual a sp3, a variável sq é definida como igual a sq3 e a variável spq é definida como igual a spq3. vii.
As variáveis p0 p3 q0 e q3 são primeiro inicializadas para 0 e são, então, modificadas de acordo com sidePisLargeBlk e sideQisLargeBlk da seguinte maneira:
– Quando sidePisLargeBlk é igual a 1, o seguinte se aplica: p3 = p3,3 (8-1103) p0 = pmaxFilterLengthP,3 (8-1104) – Quando sideQisLargeBlk é igual a 1, o seguinte se aplica: q3 = q3,3 (8-1105) q0 = qmaxFilterLengthQ,3 (8-1106) viii. Quando edgeType é igual a EDGE_VER para a localização de amostra ( xCb + xBl, yCb + yBl + 3 ) ou quando edgeType é igual a EDGE_HOR para a localização de amostra ( xCb + xBl + 3, yCb + yBl ), o processo de decisão para uma amostra de luma, conforme especificado na cláusula 8.8.3.6.5, é invocado com os valores de amostra p 0, p3, q0, q3, as variáveis dpq, sp, sq, spq, sidePisLargeBlk, sideQisLargeBlk, β e tC como entradas, e a saída é atribuída à decisão dSam3.
9. As variáveis dE, dEp e dEq são derivadas da seguinte maneira: – Se dSam0 e dSam3 forem ambos iguais a 1, a variável dE é definida como igual a 3, dEp é definido como igual a 1, e dEq é definido como igual a 1. – De outro modo, as seguintes etapas ordenadas se aplicam: a. As variáveis dpq0, dpq3, dp, dq e d são derivadas da seguinte maneira: dpq0 = dp0 + dq0 (8-1107) dpq3 = dp3 + dq3 (8-1108) dp = dp0 + dp3 (8-1109) dq = dq0 + dq3 (8-1110) d = dpq0 + dpq3 (8-1111) b. As variáveis dE, dEp, dEq, sidePisLargeBlk e sideQisLargeBlk são definidas como iguais a 0. c. Quando d é menor do que β e maxFilterLengthP e maxFilterLengthQ são maiores do que 2, as seguintes etapas ordenadas se aplicam: i. A variável dpq é definida como igual a 2 * dpq0. ii. A variável sp é definida como igual a sp0, a variável sq é definida como igual a sq0 e a variável spq é definida como igual a spq0. iii. Para a localização de amostra ( xCb + xBl, yCb + yBl ), o processo de decisão para uma amostra de luma, conforme especificado na cláusula 8.8.3.6.5, é invocado com as variáveis p0, p3, q0, q3 todas definidas como iguais a 0, as variáveis dpq, sp, sq, spq, sidePisLargeBlk, sideQisLargeBlk, β e tC como entradas, e a saída é atribuída à decisão dSam0. iv.
A variável dpq é definida como igual a 2 * dpq3. v.
A variável sp é definida como igual a sp3, a variável sq é definida como igual a sq3 e a variável spq é definida como igual a spq3. vi.
Quando edgeType é igual a EDGE_VER para a localização de amostra ( xCb + xBl, yCb + yBl + 3 ) ou quando edgeType é igual a EDGE_HOR para a localização de amostra ( xCb + xBl + 3, yCb + yBl ), o processo de decisão para uma amostra, conforme especificado na cláusula 8.8.3.6.5, é invocado com as variáveis p0, p3, q0, q3 todas definidas como iguais a 0, as variáveis dpq, sp, sq, spq, sidePisLargeBlk, sideQisLargeBlk, β e tC como entradas, e a saída é atribuída à decisão dSam3. d.
Quando d é menor do que β, as seguintes etapas ordenadas se aplicam: i.
A variável dE é definida como igual a 1. ii.
Quando dSam0 é igual a 1 e dSam3 é igual a 1, a variável dE é definida como igual a 2. iii.
Quando maxFilterLengthP é maior do que 1, e maxFilterLengthQ é maior do que 1, e dp é menor do que ( β + ( β >> 1 ) ) >> 3, a variável dEp é definida como igual a 1. iv.
Quando maxFilterLengthP é maior do que 1, e maxFilterLengthQ é maior do que 1, e dq é menor do que ( β + ( β >> 1 ) ) >> 3, a variável dEq é definida como igual a 1. Tabela 8-18 – Derivação de variáveis limiares β′ e tC′ a partir de entrada Q Q 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 β′ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 t C′ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Q 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 β′ 7 8 9 10 11 12 13 14 15 16 17 18 20 22 24 26 28 t C′ 0 3 4 4 4 4 5 5 5 5 7 7 8 9 10 10 11 Q 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 β′ 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 tC′ 13 14 15 17 19 21 24 25 29 33 36 41 45 51 57 64 71 Q 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 β′ 64 66 68 70 72 74 76 78 80 82 84 86 88 - - tC′ 80 89 100 112 125 141 157 177 198 222 250 280 314 352 395
[0191] 8.8.3.6.2 Processo de filtragem para bordas de bloco de luma
[0192] Entradas para esse processo são: – um arranjo de amostra de imagem recPicture, – uma localização ( xCb, yCb ) que especifica a amostra topo- esquerda do bloco de codificação atual em relação à amostra topo-esquerda da imagem atual, – uma localização ( xBl, yBl ) que especifica a amostra topo- esquerda do bloco atual em relação à amostra topo-esquerda do bloco de codificação atual, – uma variável edgeType que especifica se uma borda vertical (EDGE_VER) ou horizontal (EDGE_HOR) é filtrada, – as variáveis dE, dEp e dEq contendo decisões, – as variáveis maxFilterLengthP e maxFilterLengthQ contendo comprimentos de filtro máx, – a variável tC.
[0193] Saída desse processo é o arranjo de amostra de imagem modificada recPicture.
[0194] Dependendo do valor de edgeType, o seguinte se aplica: – Se edgeType for igual a EDGE_VER, as seguintes etapas ordenadas se aplicam:
1. Os valores de amostra pi,k e qj,k com i = 0..maxFilterLengthP, j = 0..maxFilterLengthQ e k = 0..3 são derivados da seguinte maneira: qj,k = recPictureL[ xCb + xBl + j ][ yCb + yBl + k ] (8-1112) pi,k = recPictureL[ xCb + xBl − i − 1 ][ yCb + yBl + k ] (8-1113)
2. Quando dE não é igual a 0 e dE não é igual a 3, para cada localização de amostra ( xCb + xBl, yCb + yBl + k ), k = 0..3, as seguintes etapas ordenadas se aplicam:
a. O processo de filtragem para uma amostra de luma usando filtros curtos, conforme especificado na cláusula 8.8.3.6.6, é invocado com os valores de amostra pi,k, qj,k com i = 0..maxFilterLengthP, as localizações ( xPi, yPi ) definidas como iguais a ( xCb + xBl − i − 1, yCb + yBl + k ) e ( xQi, yQi ) definidos como iguais a ( xCb + xBl + j, yCb + yBl + k ) com j = 0..maxFilterLengthQ, a decisão dE, as variáveis dEp e dEq e a variável t C como entradas, e o número de amostras filtradas nDp e nDq de cada lado da fronteira de bloco e os valores de amostra filtrada pi′ e qj′ como saídas. b. Quando nDp é maior do que 0, os valores de amostra filtrada p i′ com i = 0..nDp − 1 substituem as amostras correspondentes dentro do arranjo de amostra recPicture da seguinte maneira: recPicture[ xCb + xBl − i − 1 ][ yCb + yBl + k ] = pi′ (8-1114) c. Quando nDq é maior do que 0, os valores de amostra filtrada q j′ com j = 0..nDq − 1 substituem as amostras correspondentes dentro do arranjo de amostra recPicture da seguinte maneira: recPicture[ xCb + xBl + j ][ yCb + yBl + k ] = qj′ (8-1115)
3. Quando dE é igual a 3, para cada localização de amostra ( xCb + xBl, yCb + yBl + k ), k = 0..3, as seguintes etapas ordenadas se aplicam: a. O processo de filtragem para uma amostra de luma usando filtros longos, conforme especificado na cláusula 8.8.3.6.7, é invocado com os valores de amostra pi,k, qj,k com i = 0..maxFilterLengthP e j = 0..maxFilterLengthQ, as localizações ( xPi, yPi ) definidas como iguais a ( xCb + xBl − i − 1, yCb + yBl + k ) com i = 0..maxFilterLengthP − 1 e ( xQj, yQj ) definidos como iguais a ( xCb + xBl + j, yCb + yBl + k ) com j = 0..maxFilterLengthQ − 1, as variáveis maxFilterLengthP, maxFilterLengthQ e tC como entradas e os valores de amostras filtradas p i′ e qj′ como saídas. b. Os valores de amostra filtrada pi′ com i = 0..maxFilterLengthP − 1 substituem as amostras correspondentes dentro do arranjo de amostra recPicture da seguinte maneira: recPicture[ xCb + xBl − i − 1 ][ yCb + yBl + k ] = pi′ (8-1116) c. Os valores de amostra filtrada qj′ com j = 0..maxFilterLengthQ − 1 substituem as amostras correspondentes dentro do arranjo de amostra recPicture da seguinte maneira: recPicture[ xCb + xBl + j ][ yCb + yBl + k ] = qj′ (8-1117)
– De outro modo (edgeType é igual a EDGE_HOR), as seguintes etapas ordenadas se aplicam:
1. Os valores de amostra pi,k e qj,k com i = 0..maxFilterLengthP, j = 0..maxFilterLengthQ e k = 0..3 são derivados da seguinte maneira: qj,k = recPictureL[ xCb + xBl + k ][ yCb + yBl + j ] (8-1118) pi,k = recPictureL[ xCb + xBl + k ][ yCb + yBl − i − 1 ] (8-1119)
2. Quando dE não é igual a 0 e dE não é igual a 3, para cada localização de amostra ( xCb + xBl + k, yCb + yBl ), k = 0..3, as seguintes etapas ordenadas se aplicam: a. O processo de filtragem para uma amostra de luma usando filtros curtos, conforme especificado na cláusula 8.8.3.6.6, é invocado com os valores de amostra pi,k, qj,k com i = 0..maxFilterLengthP, as localizações ( xPi, yPi ) definidas como iguais a ( xCb + xBl + k, yCb + yBl − i − 1 ) e ( xQj, yQj ) definidos como iguais a ( xCb + xBl + k, yCb + yBl + j ) com j = 0..maxFilterLengthQ, a decisão dE, as variáveis dEp e dEq, e a variável t C como entradas, e o número de amostras filtradas nDp e nDq de cada lado da fronteira de bloco e os valores de amostra filtrada pi′ e qj′ como saídas. b. Quando nDp é maior do que 0, os valores de amostra filtrada p i′ com i = 0..nDp − 1 substituem as amostras correspondentes dentro do arranjo de amostra recPicture da seguinte maneira: recPicture[ xCb + xBl + k ][ yCb + yBl − i − 1 ] = pi′ (8-1120) c. Quando nDq é maior do que 0, os valores de amostra filtrada q j′ com j = 0..nDq − 1 substituem as amostras correspondentes dentro do arranjo de amostra recPicture da seguinte maneira: recPicture[ xCb + xBl + k ][ yCb + yBl + j ] = qj′ (8-1121)
3. Quando dE é igual a 3, para cada localização de amostra ( xCb + xBl + k, yCb + yBl ), k = 0..3, as seguintes etapas ordenadas se aplicam: a. O processo de filtragem para uma amostra de luma usando filtros longos, conforme especificado na cláusula 8.8.3.6.7, é invocado com os valores de amostra pi,k, qj,k com i = 0..maxFilterLengthP e j = 0..maxFilterLengthQ, as localizações ( xPi, yPi ) definidas como iguais a ( xCb + xBl + k, yCb + yBl − i − 1 ) com i = 0..maxFilterLengthP − 1 e ( xQj, yQj ) definidos como iguais a ( xCb + xBl + k, yCb + yBl + j ) com j = 0..maxFilterLengthQ − 1, as variáveis maxFilterLengthP, maxFilterLengthQ, e a variável tC como entradas, e os valores de amostra filtrada p i′ e qj′ como saídas. b. Os valores de amostra filtrada pi′ com i = 0..maxFilterLengthP − 1 substituem as amostras correspondentes dentro do arranjo de amostra recPicture da seguinte maneira: recPicture[ xCb + xBl + k ][ yCb + yBl − i − 1 ] = pi′ (8-1122) c. Os valores de amostra filtrada qj′ com j = 0..maxFilterLengthQ − 1 substituem as amostras correspondentes dentro do arranjo de amostra recPicture da seguinte maneira: recPicture[ xCb + xBl + k ][ yCb + yBl + j ] = qj′ (8-1123)
[0195] 8.8.3.6.3 Processo de decisão para bordas de bloco de croma
[0196] Esse processo é apenas invocado quando ChromaArrayType não é igual a 0.
[0197] Entradas para esse processo são: – um arranjo de amostra de imagem croma recPicture, – uma localização croma ( xCb, yCb ) que especifica a amostra topo-esquerda do bloco de codificação de croma atual em relação à amostra de croma topo-esquerda da imagem atual, – Uma localização croma ( xBl, yBl ) que especifica a amostra topo- esquerda do bloco de croma atual em relação à amostra topo-esquerda do bloco de codificação de croma atual, – uma variável edgeType que especifica se uma borda vertical (EDGE_VER) ou horizontal (EDGE_HOR) é filtrada, – uma variável cIdx que especifica o índice de componente de cor, – uma variável cQpPicOffset que especifica o deslocamento de parâmetro de quantização de croma de nível de imagem, – uma variável bS que especifica a intensidade de filtragem de fronteira, – uma variável maxFilterLengthCbCr.
[0198] Saídas desse processo são – a variável modificada maxFilterLengthCbCr, – a variável tC.
[0199] A variável maxK é derivada da seguinte maneira: – Se edgeType for igual a EDGE_VER, o seguinte se aplica:
maxK = ( SubHeightC = = 1 ) ? 3 : 1 (8-1124) – De outro modo, (edgeType é igual a EDGE_HOR), o seguinte se aplica: maxK = ( SubWidthC = = 1 ) ? 3 : 1 (8-1125)
[0200] Os valores de pi e qi com i = 0.. maxFilterLengthCbCr e k = 0..maxK são derivados da seguinte maneira: – Se edgeType for igual a EDGE_VER, o seguinte se aplica:: qi,k = recPicture[ xCb + xBl + i ][ yCb + yBl + k ] (8-1126) pi,k = recPicture[ xCb + xBl − i − 1 ][ yCb + yBl + k ] (8-1127) subSampleC = SubHeightC (8-1128) – De outro modo, (edgeType é igual a EDGE_HOR), o seguinte se aplica: qi,k = recPicture[ xCb + xBl + k ][ yCb + yBl + i ] (8-1129) pi,k = recPicture[ xCb + xBl + k ][ yCb + yBl − i − 1 ] (8-1130) subSampleC = SubWidthC (8-1131)
[0201] As variáveis QpQ e QpP são definidas como iguais aos valores de QpY das unidades de codificação que incluem os blocos de codificação contendo a amostra q0,0 e p0,0, respectivamente. A variável QpC é derivada da seguinte maneira: qPi = Clip3( 0, 63, ( ( QpQ + QpP + 1 ) >> 1 ) + cQpPicOffset ) (8-1132) QpC = ChromaQpTable[ cIdx − 1 ][ qPi ] (8-1133)
[0202] NOTA – a variável cQpPicOffset fornece um ajuste para o valor de pps_cb_qp_offset ou pps_cr_qp_offset, de acordo com o fato de o componente croma filtrado ser o componente Cb ou Cr. Entretanto, para evitar a necessidade de variar a quantidade do ajuste dentro da imagem, o processo de filtragem não inclui um ajuste para o valor de slice_cb_qp_offset ou slice_cr_qp_offset nem (quando cu_chroma_qp_offset_enabled_flag é igual a 1) para o valor de CuQpOffsetCb, CuQpOffsetCr ou CuQpOffsetCbCr.
[0203] O valor da variável β′ é determinado conforme especificado na Tabela 8-18 com base no parâmetro de quantização Q derivado da seguinte maneira: Q = Clip3( 0, 63, QpC + ( slice_beta_offset_div2 << 1 ) ) (8-1134) em que slice_beta_offset_div2 é o valor do elemento de sintaxe slice_beta_offset_div2 para a fatia que contém amostra q 0,0.
[0204] A variável β é derivada da seguinte maneira: β = β′ * ( 1 << ( BitDepthC − 8 ) ) (8-1135)
[0205] O valor da variável tC′ é determinado conforme especificado na Tabela 8-18 com base no parâmetro de quantização de croma Q derivado da seguinte maneira: Q = Clip3( 0, 65, QpC + 2 * ( bS − 1 ) + ( slice_tc_offset_div2 << 1 ) ) (8-1136) em que slice_tc_offset_div2 é o valor do elemento de sintaxe slice_tc_offset_div2 para a fatia que contém amostra q 0,0.
[0206] A variável tC é derivada da seguinte maneira: tC = ( BitDepthC < 10 ) ? ( tC′ + 2 ) >> ( 10 − BitDepthC ) : tC′ * ( 1 << ( BitDepthC − 8 ) ) (8-1137)
[0207] Quando maxFilterLengthCbCr é igual a 1 e bS não é igual a 2, maxFilterLengthCbCr é definido como igual a 0.
[0208] Quando maxFilterLengthCbCr é igual a 3, as seguintes etapas ordenadas se aplicam:
1. As variáveis n1, dpq0, dpq1, dp, dq e d são derivadas da seguinte maneira: n1 = ( subSampleC = = 2 ) ? 1 : 3 (8-1138) dp0 = Abs( p2,0 − 2 * p1,0 + p0,0 ) (8-1139) dp1 = Abs( p2,n1 − 2 * p1,n1 + p0,n1 ) (8-1140) dq0 = Abs( q2,0 − 2 * q1,0 + q0,0 ) (8-1141) dq1 = Abs( q2,n1 − 2 * q1,n1 + q0,n1 ) (8-1142) dpq0 = dp0 + dq0 (8-1143) dpq1 = dp1 + dq1 (8-1144) dp = dp0 + dp1 (8-1145) dq = dq0 + dq1 (8-1146) d = dpq0 + dpq1 (8-1147)
2. As variáveis dSam0 e dSam1 são ambas definidas como iguais a
0.
3. Quando d é menor do que β, as seguintes etapas ordenadas se aplicam: a. A variável dpq é definida como igual a 2 * dpq0.
b. A variável dSam0 é derivada invocando-se o processo de decisão para uma amostra de croma, conforme especificado na cláusula 8.8.3.6.8, para a localização de amostra ( xCb + xBl, yCb + yBl ) com valores de amostra p0,0, p3,0, q0,0, e q3,0, as variáveis dpq, β e tC como entradas, e a saída é atribuída à decisão dSam0. c. A variável dpq é definida como igual a 2 * dpq1. d. A variável dSam1 é modificada da seguinte maneira: – Se edgeType é igual a EDGE_VER, para a localização de amostra ( xCb + xBl, yCb + yBl + n1 ), o processo de decisão para uma amostra de croma, conforme especificado na cláusula 8.8.3.6.8, é invocado com valores de amostra p0,n1, p3,n1, q0,n1, e q3,n1, as variáveis dpq, β e tC como entradas, e a saída é atribuída à decisão dSam1. – De outro modo (edgeType é igual a EDGE_HOR), para a localização de amostra ( xCb + xBl + n1, yCb + yBl ), o processo de decisão para uma amostra de croma, conforme especificado na cláusula 8.8.3.6.8, é invocado com valores de amostra p0,n1, p3,n1, q0,n1 e q3,n1, as variáveis dpq, β e tC como entradas, e a saída é atribuída à decisão dSam1.
4. A variável maxFilterLengthCbCr é modificada da seguinte maneira: – Se dSam0 for igual a 1 e dSam1 for igual a 1, maxFilterLengthCbCr é definido como igual a 3. – De outro modo, maxFilterLengthCbCr é definido como igual a 1.
[0209] Observa-se que, conforme ilustrado em 8-1132 e 8-1133 da seção 8.8.3.6.3, na abordagem convencional, um QP de luma (por exemplo, qPi) é derivado com base em uma média de QPs de luma de dois blocos adjacentes (por exemplo, QpQ e QpP ); então, um QP de croma (por exemplo, QpC) é derivado do QP de luma (por exemplo, qPi) (usando um LUT). A modalidade da presente revelação aperfeiçoa a abordagem convencional e os detalhes de como um processo de decisão para a borda de bloco de croma é realizado serão descritos abaixo.
[0210] 8.8.3.6.4 Processo de filtragem para bordas de bloco de croma
[0211] Esse processo é apenas invocado quando ChromaArrayType não é igual a 0.
[0212] Entradas para esse processo são:
– um arranjo de amostra de imagem croma recPicture, – uma localização croma ( xCb, yCb ) que especifica a amostra topo-esquerda do bloco de codificação de croma atual em relação à amostra de croma topo-esquerda da imagem atual, – uma localização croma ( xBl, yBl ) que especifica a amostra topo- esquerda do bloco de croma atual em relação à amostra topo-esquerda do bloco de codificação de croma atual, – uma variável edgeType que especifica se uma borda vertical (EDGE_VER) ou horizontal (EDGE_HOR) é filtrada, – uma variável maxFilterLengthCbCr contendo o comprimento máximo de filtro croma, – a variável tC.
[0213] Saída desse processo é o arranjo de amostra de imagem croma modificado recPicture.
[0214] A variável maxK é derivada da seguinte maneira: – Se edgeType for igual a EDGE_VER, o seguinte se aplica: maxK = ( SubHeightC = = 1 ) ? 3 : 1 (8-1148) – De outro modo, (edgeType é igual a EDGE_HOR), o seguinte se aplica: maxK = ( SubWidthC = = 1 ) ? 3 : 1 (8-1149)
[0215] Os valores pi e qi com i = 0..maxFilterLengthCbCr e k = 0..maxK são derivados da seguinte maneira: – Se edgeType for igual a EDGE_VER, o seguinte se aplica: qi,k = recPicture[ xCb + xBl + i ][ yCb + yBl + k ] (8-1150) pi,k = recPicture[ xCb + xBl − i − 1 ][ yCb + yBl + k ] (8-1151) – De outro modo, (edgeType é igual a EDGE_HOR), o seguinte se aplica: qi,k = recPicture[ xCb + xBl + k ][ yCb + yBl + i ] (8-1152) pi,k = recPicture[ xCb + xBl + k ][ yCb + yBl − i − 1 ] (8-1153)
[0216] Dependendo do valor de edgeType, o seguinte se aplica: – Se edgeType for igual a EDGE_VER, para cada localização de amostra ( xCb + xBl, yCb + yBl + k ), k = 0..maxK, as seguintes etapas ordenadas se aplicam:
1. O processo de filtragem para uma amostra de croma, conforme especificado na cláusula 8.8.3.6.9, é invocado com a variável maxFilterLengthCbCr, os valores de amostra p i,k, qi,k com i = 0..maxFilterLengthCbCr, as localizações ( xCb + xBl − i − 1, yCb + yBl + k ) e ( xCb + xBl + i, yCb + yBl + k ) com i = 0..maxFilterLengthCbCr − 1, e a variável tC como entradas, e os valores de amostra filtrada p i′ e qi′ com i = 0..maxFilterLengthCbCr − 1 como saídas.
2. Os valores de amostra filtrada p i′ e qi′ com i = 0..maxFilterLengthCbCr − 1 substituem as amostras correspondentes dentro do arranjo de amostra recPicture da seguinte maneira: recPicture[ xCb + xBl + i ][ yCb + yBl + k ] = qi′ (8-1154) recPicture[ xCb + xBl − i − 1 ][ yCb + yBl + k ] = pi′ (8-1155) – De outro modo (edgeType é igual a EDGE_HOR), para cada localização de amostra ( xCb + xBl + k, yCb + yBl ), k = 0..maxK, as seguintes etapas ordenadas se aplicam:
1. O processo de filtragem para uma amostra de croma, conforme especificado na cláusula 8.8.3.6.9, é invocado com a variável maxFilterLengthCbCr, os valores de amostra p i,k, qi,k, com i = 0..maxFilterLengthCbCr , as localizações ( xCb + xBl + k, yCb + yBl − i − 1 ) e ( xCb + xBl + k, yCb + yBl + i ), e a variável tC como entradas, e os valores de amostra filtrada pi′ e qi′ como saídas.
2. Os valores de amostra filtrada pi′ e qi′ substituem as amostras correspondentes dentro do arranjo de amostra recPicture da seguinte maneira: recPicture[ xCb + xBl + k ][ yCb + yBl + i ] = qi′ (8-1156) recPicture[ xCb + xBl + k ][ yCb + yBl − i − 1 ] = pi′ (8-1157) Observa-se que o processo de filtragem para a borda de bloco de croma com base no parâmetro de limiar (por exemplo, a variável tC) pode ser encontrado em documentos, tais como na seção acima 8.8.3.6.4 da especificação VVC, e não será repetido a seguir.
[0217] 8.8.3.6.5 Processo de decisão para uma amostra de luma
[0218] Entradas para esse processo são: – os valores de amostra p0, p3, q0 e q3, – as variáveis dpq, sp, sq, spq, sidePisLargeBlk, sideQisLargeBlk, β e t C.
[0219] Saída desse processo é a variável dSam contendo uma decisão.
[0220] As variáveis sp e sq são modificadas da seguinte maneira: – Quando sidePisLargeBlk é igual a 1, o seguinte se aplica: sp = ( sp + Abs( p3 − p0 ) + 1 ) >> 1 (8-1158) – Quando sideQisLargeBlk é igual a 1, o seguinte se aplica: sq = ( sq + Abs( q3 − q0 ) + 1 ) >> 1 (8-1159)
[0221] A variável sThr é derivada da seguinte maneira: – Se sidePisLargeBlk for igual a 1 ou sideQisLargeBlk for igual a 1, o seguinte se aplica: sThr = 3 * β >> 5 (8-1160) – De outro modo, o seguinte se aplica: sThr = β >> 3 (8-1161)
[0222] A variável dSam é especificada da seguinte maneira: – Se todas as condições a seguir forem verdadeiras, dSam é definido como igual a 1: – dpq é menor do que ( β >> 2 ), – sp + sq é menor do que sThr, – spq é menor do que ( 5 * tC + 1 ) >> 1. – De outro modo, dSam é definido como igual a 0.
[0223] 8.8.3.6.6 Processo de filtragem para uma amostra de luma usando filtros curtos
[0224] Entradas para esse processo são: – os valores de amostra pi e qi com i = 0..3, – as localizações de pi e qi, ( xPi, yPi ) e ( xQi, yQi ) com i = 0..2, – uma variável dE, – as variáveis dEp e dEq contendo decisões para filtrar amostras p1 e q1, respectivamente, – uma variável tC.
[0225] Saídas desse processo são: – o número de amostras filtradas nDp e nDq, – os valores de amostra filtrada pi′ e qj′ com i = 0..nDp − 1, j = 0..nDq − 1.
[0226] Dependendo do valor de dE, o seguinte se aplica: – Se a variável dE for igual a 2, nDp e nDq são ambos definidos como iguais a 3 e a seguinte filtragem forte se aplica: p0′ = Clip3( p0 − 3 * tC, p0 + 3 * tC, ( p2 + 2 * p1 + 2 * p0 + 2 * q0 + q1 + 4 ) >> 3) (8-1162) p1′ = Clip3( p1 − 2 * tC, p1 + 2 * tC, ( p2 + p1 + p0 + q0 + 2 ) >> 2 ) (8-1163) p2′ = Clip3( p2 − 1 * tC, p2 + 1*tC, ( 2 * p3 + 3 * p2 + p1 + p0 + q0 + 4 ) >> 3) (8-1164) q0′ = Clip3( q0 − 3 * tC, q0 + 3 * tC, ( p1 + 2 * p0 + 2 * q0 + 2 * q1 + q2 + 4 ) >> 3) (8-1165) q1′ = Clip3( q1 − 2 * tC, q1 + 2 * tC, ( p0 + q0 + q1 + q2 + 2 ) >> 2 ) (8-1166) q2′= Clip3( q2 − 1 * tC, q2 + 1 * tC, ( p0 + q0 + q1 + 3 * q2 + 2 * q3 + 4 ) >> 3 ) (8-1167) – De outro modo, nDp e nDq são definidos, ambos, como iguais a 0 e a seguinte filtragem fraca se aplica: – O seguinte se aplica:  = ( 9 * ( q0 − p0 ) − 3 * ( q1 − p1 ) + 8 ) >> 4 (8-1168) – Quando Abs() é menor do que tC * 10, as seguintes etapas ordenadas se aplicam: – Os valores de amostra filtrada p0′ e q0′ são especificados da seguinte maneira:  = Clip3( −tC, tC,  ) (8-1169) p0′ = Clip1Y( p0 +  ) (8-1170) q0′ = Clip1Y( q0 −  ) (8-1171) – Quando dEp é igual a 1, o valor de amostra filtrada p 1′ é especificado da seguinte maneira: p = Clip3( −( tC >> 1 ), tC >> 1, ( ( ( p2 + p0 + 1 ) >> 1 ) − p1 +  ) >> 1) (8-1172) p1′ = Clip1Y( p1 + p ) (8-1173) – Quando dEq é igual a 1, o valor de amostra filtrada q 1′ é especificado da seguinte maneira:
q = Clip3( −( tC >> 1 ), tC >> 1, ( ( ( q2 + q0 + 1 ) >> 1 ) − q1 −  ) >> 1) (8-1174) q1′ = Clip1Y( q1 + q ) (8-1175) – nDp é definido como igual a dEp + 1 e nDq é definido como igual a dEq + 1.
[0227] Quando nDp é maior do que 0 e uma ou mais dentre as condições a seguir são verdadeiras, nDp é definido como igual a 0: – cu_transquant_bypass_flag da unidade de codificação que inclui o bloco de codificação contendo a amostra p 0 é igual a 1. – pred_mode_plt_flag da unidade de codificação que inclui o bloco de codificação contendo a amostra p0 é igual a 1.
[0228] Quando nDq é maior do que 0 e uma ou mais dentre as condições a seguir são verdadeiras, nDq é definido como igual a 0: – cu_transquant_bypass_flag da unidade de codificação que inclui o bloco de codificação contendo a amostra q 0 é igual a 1. – pred_mode_plt_flag da unidade de codificação que inclui o bloco de codificação contendo a amostra q 0 é igual a 1.
[0229] 8.8.3.6.7 Processo de filtragem para uma amostra de luma usando filtros longos
[0230] Entradas para esse processo são: – as variáveis maxFilterLengthP e maxFilterLengthQ, – os valores de amostra pi e qj com i = 0..maxFilterLengthP e j = 0..maxFilterLengthQ, – as localizações de pi e qj, ( xPi, yPi ) e ( xQj, yQj ) com i = 0..maxFilterLengthP − 1 e j = 0..maxFilterLengthQ − 1, – uma variável tC.
[0231] Saídas desse processo são: – os valores de amostra filtrada pi′ e qj′ com i = 0..maxFilterLengthP − 1, j = 0..maxFilterLenghtQ − 1.
[0232] A variável refMiddle é derivada da seguinte maneira: – Se maxFilterLengthP for igual a maxFilterLengthQ e maxFilterLengthP for igual a 5, o seguinte se aplica: refMiddle = ( p4 + p3 + 2* ( p2 + p1 + p0 + q0 + q1 + q2 ) + q3 + q4 + 8) >> 4 (8-1176)
– De outro modo, se maxFilterLengthP for igual a maxFilterLengthQ e maxFilterLengthP não for igual a 5, o seguinte se aplica: refMiddle = ( p6 + p5 + p4 + p3 + p2 + p1 + 2* ( p0 + q0 ) + q1 + q2 + q3 + q4 + q5 + q6 + 8 ) >> 4 (8-1177) – De outro modo, se uma dentre as condições a seguir forem verdadeiras, – maxFilterLengthQ é igual a 7 e maxFilterLengthP é igual a 5, – maxFilterLengthQ é igual a 5 e maxFilterLengthP é igual a 7, o seguinte se aplica: refMiddle = ( p4 + p3 + 2* ( p2 + p1 + p0 + q0 + q1 + q2 ) + q3 + q4 + 8 ) >> 4 (8-1178) – De outro modo, se uma dentre as seguintes condições forem verdadeiras, – maxFilterLengthQ é igual a 5 e maxFilterLengthP é igual a 3, – maxFilterLengthQ é igual a 3 e maxFilterLengthP é igual a 5, o seguinte se aplica: refMiddle = ( p3 + p2 + p1 + p0 + q0 + q1 + q2 + q3 + 4) >> 3 (8-1179) – De outro modo, se maxFilterLengthQ for igual a 7 e maxFilterLengthP for igual a 3, o seguinte se aplica: refMiddle = ( 2 * ( p2 + p1 + p0 + q0 ) + p0 + p1 + q1 + q2 + q3 + q4 + q5 + q6 + 8 ) >> 4 (8-1180) – De outro modo, o seguinte se aplica: refMiddle = ( p6 + p5 + p4 + p3 + p2 + p1 + 2*( q2 + q1 + q0 + p0) + q0 + q1 + 8 ) >> 4 (8-1181)
[0233] As variáveis refP e refQ são derivadas da seguinte maneira: refP = ( pmaxFilterLengtP + pmaxFilterLengthP-1 + 1 ) >> 1 (8-1182) refQ = ( qmaxFilterLengtQ + qmaxFilterLengthQ-1 + 1 ) >> 1 (8-1183)
[0234] As variáveis fi e tCPDi são definidas da seguinte maneira: – Se maxFilterLengthP for igual a 7, o seguinte se aplica: f0..6 = { 59, 50, 41, 32, 23, 14, 5 } (8-1184) tCPD0..6 = { 6, 5, 4, 3, 2, 1, 1 } (8-1185) – De outro modo, se maxFilterLengthP for igual a 5, o seguinte se aplica:
f0..4 = { 58, 45, 32, 19, 6 } (8-1186) tCPD0..4 = { 6, 5, 4, 3, 2 } (8-1187) – De outro modo, o seguinte se aplica: f0..2 = { 53, 32, 11 } (8-1188) tCPD0..2 = { 6, 4, 2} (8-1189)
[0235] As variáveis gj e tCQDj são definidas da seguinte maneira: – Se maxFilterLengthQ for igual a 7, o seguinte se aplica: g0..6 = { 59, 50, 41, 32, 23, 14, 5 } (8-1190) tCQD0..6 = { 6, 5, 4, 3, 2, 1, 1 } (8-1191) – De outro modo, se maxFilterLengthQ for igual a 5, o seguinte se aplica: g0..4 = { 58, 45, 32, 19, 6 } (8-1192) tCQD0..4 = { 6, 5, 4, 3, 2 } (8-1193) – De outro modo, o seguinte se aplica: g0..2 = { 53, 32, 11 } (8-1194) tCQD0..2 = { 6, 4, 2 } (8-1195)
[0236] Os valores de amostra filtrada pi′ e qj′ com i = 0..maxFilterLengthP − 1 e j = 0..maxFilterLengthQ − 1 são derivados da seguinte maneira: pi′ = Clip3( pi − ( tC*tCPDi ) >> 1, pi + ( tC*tCPDi ) >> 1, ( refMiddle*fi + refP*( 64 − fi ) + 32) >> 6 ) (8-1196) qj′ = Clip3( qj − ( tC*tCQDj ) >> 1, qj + ( tC*tCQDj ) >> 1, ( refMiddle*gj + refQ*(64 − gj ) + 32) >> 6 ) (8-1197)
[0237] Quando uma ou mais dentre as condições a seguir forem verdadeiras, o valor de amostra filtrada, p i′ é substituído pelo valor de amostra de entrada correspondente pi com i = 0..maxFilterLengthP − 1: – cu_transquant_bypass_flag da unidade de codificação que inclui o bloco de codificação contendo a amostra p i é igual a 1. – pred_mode_plt_flag da unidade de codificação que inclui o bloco de codificação contendo a amostra pi é igual a 1.
[0238] Quando uma ou mais dentre as condições a seguir são verdadeiras, o valor de amostra filtrada, q j′ é substituído pelo valor de amostra de entrada correspondente qj com j = 0..maxFilterLengthQ − 1: – cu_transquant_bypass_flag da unidade de codificação que inclui o bloco de codificação contendo a amostra q j é igual a 1. – pred_mode_plt_flag da unidade de codificação que inclui o bloco de codificação contendo a amostra qj é igual a 1.
[0239] 8.8.3.6.8 Processo de decisão para uma amostra de croma
[0240] Entradas para esse processo são: – os valores de amostra p0, p3, q0 e q3, – as variáveis dpq, β e tC.
[0241] Saída desse processo é a variável dSam contendo uma decisão.
[0242] A variável dSam é especificada da seguinte maneira: – Se todas as condições a seguir forem verdadeiras, dSam é definido como igual a 1: – dpq é menor do que ( β >> 2 ), – Abs( p3 − p0 ) + Abs( q0 − q3 ) é menor do que ( β >> 3 ), – Abs( p0 − q0 ) é menor do que ( 5 * tC + 1 ) >> 1. – De outro modo, dSam é definido como igual a 0. //Observa-se que, conforme mostrado na Figura 11, a variável dSam contendo uma decisão 1107, quando dSam é definido como igual a 1, significa que o resultado da decisão 1107 é SIM, então, em um exemplo, a etapa 1109 pode ser realizada; quando dSam é definido como igual a 0, significa que o resultado da decisão 1107 é NÃO, então, em um exemplo, a etapa 1105 pode ser realizada.//
[0243] 8.8.3.6.9 Processo de filtragem para uma amostra de croma
[0244] Esse processo é apenas invocado quando ChromaArrayType não é igual a 0.
[0245] Entradas para esse processo são: – a variável maxFilterLength, – os valores de amostra de croma pi e qi com i = 0..maxFilterLengthCbCr, – as localizações croma de pi e qi, ( xPi, yPi ) e ( xQi, yQi ) com i = 0..maxFilterLengthCbCr − 1,
– uma variável tC.
[0246] Saídas desse processo são os valores de amostra filtrada pi′ e qi′ com i = 0..maxFilterLengthCbCr − 1.
[0247] Os valores de amostra filtrada p i′ e qi′ com i = 0..maxFilterLengthCbCr − 1 são derivados da seguinte maneira: – Se maxFilterLengthCbCr for igual a 3, a seguinte filtragem forte se aplica: p0′ = Clip3( p0 − tC, p0 + tC, ( p3 + p2 + p1 + 2 * p0 + q0 + q1 + q2 + 4 ) >> 3 ) (8-1198) p1′ = Clip3( p1 − tC, p1 + tC, ( 2 * p3 + p2 + 2 * p1 + p0 + q0 + q1 + 4 ) >> 3) (8-1199) p2′ = Clip3( p2 − tC, p2 + tC, ( 3 * p3 + 2 * p2 + p1 + p0 + q0 + 4 ) >> 3 ) (8-1200) q0′ = Clip3( q0 − tC, q0 + tC, ( p2 + p1 + p0 + 2 * q0 + q1 + q2 + q3 + 4 ) >> 3 ) (8-1201) q1′ = Clip3( q1 − tC, q1 + tC, ( p1 + p0 + q0 + 2 * q1 + q2 + 2 * q3 + 4 ) >> 3) (8-1202) q2′= Clip3( q2 − tC, q2 + tC, ( p0 + q0 + q1 + 2 * q2 + 3 * q3 + 4 ) >> 3 ) (8-1203) – De outro modo, a seguinte filtragem fraca se aplica:  = Clip3( −tC, tC, ( ( ( ( q0 − p0 ) << 2 ) + p1 − q1 + 4 ) >> 3 ) ) (8-1204) p0′ = Clip1C( p0 +  ) (8-1205) q0′ = Clip1C( q0 −  ) (8-1206)
[0248] Quando uma ou mais dentre as condições a seguir forem verdadeiras, o valor de amostra filtrada, p i′ é substituído pelo valor de amostra de entrada correspondente pi com i = 0..maxFilterLengthCbCr − 1: – cu_transquant_bypass_flag da unidade de codificação que inclui o bloco de codificação contendo a amostra pi é igual a 1. – pred_mode_plt_flag da unidade de codificação que inclui o bloco de codificação contendo a amostra pi é igual a 1.
[0249] Quando uma ou mais dentre as condições a seguir forem verdadeiras, o valor de amostra filtrada, qi′ é substituído pelo valor de amostra de entrada correspondente qi com i = 0..maxFilterLengthCbCr − 1:
– cu_transquant_bypass_flag da unidade de codificação que inclui o bloco de codificação contendo a amostra q i é igual a 1. – pred_mode_plt_flag da unidade de codificação que inclui o bloco de codificação contendo a amostra qi é igual a 1.
[0250] Embora a unidade de filtro loop 220 seja mostrada na Figura 2 como sendo um filtro in-loop, em outras configurações, a unidade de filtro loop 220 pode ser implantada como um filtro post-loop. O bloco filtrado 221 também pode ser denominado bloco reconstruído filtrado 221.
[0251] Codificação de Vídeo Versátil (VVC) usa uma ferramenta denominada codificação residual croma em conjunto (JCCR), que é sinalizada no fluxo de bits usando a flag “tu_joint_cbcr_residual_flag”. Essa ferramenta especifica se as amostras residuais para ambos os componentes croma Cb e Cr são codificadas como um único bloco de transformada. A flag “tu_joint_cbcr_residual_flag” igual a 1 especifica que a sintaxe de unidade de transformada inclui os níveis de coeficiente de transformada para um único bloco de transformada a partir do qual as amostras residuais para ambos Cb e Cr são derivadas. A ferramenta JCCR obtém vantagem do fato de que ambos resíduos Cb e Cr parecem se correlacionar inversamente um ao outro.
[0252] Dependendo de tu_joint_cbcr_residual_flag, tu_cbf_cb, e tu_cbf_cr, a variável TuCResMode é derivada da seguinte maneira, em que , tu_cbf_cb especifica a flag de bloco codificado do componente Cb, tu_cbf_cr é a flag de bloco codificado do componente Cr. E TuCResMode indica o modo JCCR. – Se tu_joint_cbcr_residual_flag for igual a 0, a variável TuCResMode é definida como igual a 0; – De outro modo, se tu_cbf_cb for igual a 1 e tu_cbf_cr for igual a 0, a variável TuCResMode é definida como igual a 1; – De outro modo, se tu_cbf_cb for igual a 1, a variável TuCResMode é definida como igual a 2; – De outro modo, a variável TuCResMode é definida como igual a
3.
[0253] A relação entre a “reconstrução de resíduos Cb e Cr” com base nas variáveis tu_cbf_cb, e tu_cbf_cr, a variável TuCResMode é conforme mostrado na Tabela abaixo.
tu_cbf_cb tu_cbf_cr TuCResMode Reconstrução de resíduos Cb e Cr resCb[ x ][ y ] = resJointC[ x ][ y ] 1 0 1 resCr[ x ][ y ] = ( CSign * resJointC[ x ][ y ] ) >> 1 resCb[ x ][ y ] = resJointC[ x ][ y ] 1 1 2 resCr[ x ][ y ] = CSign * resJointC[ x ][ y ] resCb[ x ][ y ] = ( CSign * 0 1 3 resJointC[ x ][ y ] ) >> 1 resCr[ x ][ y ] = resJointC[ x ][ y ]
[0254] A variável CSgin é valor de sinal (+1 ou -1) e isso é sinalizado no cabeçalho de fatia. resJointC[x][y] é o resíduo transmitido real no fluxo de bits. resCb[ x ][ y ] indica as amostras residuais derivadas para o componente croma Cb; resCr[ x ][ y ] indica as amostras residuais derivadas para o componente croma Cr.
[0255] A presente revelação pode usar respectivas tabelas de mapeamento de QP de croma para cada um dos componentes croma Cb e Cr e resíduos de Cb-Cr em conjunto. Quando o elemento de sintaxe “same_qp_table_for_chroma” equivale a 1, isso especifica que as mesmas tabelas de QP de croma são usadas e essas mesmas tabelas se aplicam a Cb, Cr e resíduos de Cb-Cr em conjunto. Quando “same_qp_table_for_chroma” equivale a 0, isso representa que uma tabela de mapeamento de QP de croma diferente é usada para Cb, Cr ou resíduos de Cb-Cr em conjunto. As três tabelas de mapeamento de croma podem ser representadas em diferentes formas.
[0256] Conforme mostrado nas Figuras 12A e 12B, há três subtabelas (isto é, as linhas com valor de índice equivalente a 0, 1 e 2). Visto que o conteúdo de linha 2 é diferente da linha 0 e/ou 1, o elemento de sintaxe same_qp_table_for_chroma deve ser igual a 0. De outro modo, se o elemento de sintaxe same_qp_table_for_chroma for igual a 1, o conteúdo da linha 1 e 2 deve ser igual àquele da linha 0.
[0257] Conforme mostrado na Figura 13, há três tabelas separadas, projetadas para Cb, Cr e resíduos de Cb-Cr em conjunto, respectivamente. Visto que o conteúdo de tabelas para Cb, Cr e resíduos de Cb-Cr em conjunto é diferente um do outro, o elemento de sintaxe same_qp_table_for_chroma deve ser igual a 0. De outro modo, se o elemento de sintaxe same_qp_table_for_chroma for igual a 1, o conteúdo de tabelas para Cb, Cr e resíduos de Cb-Cr em conjunto deve ser igual.
[0258] Os elementos de sintaxe num_points_in_qp_table_minus1[ i ], delta_qp_in_val_minus1[ i ][ j ], delta_qp_out_val[ i ][ j ] são usados para derivar as tabelas de mapeamento de QP de croma. A semântica desses elementos de sintaxe e o procedimento para derivar as tabelas de mapeamento de QP de croma são conforme mostrado abaixo: num_points_in_qp_table_minus1[ i ] mais 1 especifica o número de pontos usado para descrever a i-ésima tabela de mapeamento de QP de croma. O valor de num_points_in_qp_table_minus1[ i ] deve estar na faixa de 0 a 63 + QpBdOffsetC, inclusive. Quando num_points_in_qp_table_minus1[ 0 ] não está presente no fluxo de bits, infere-se que o valor de num_points_in_qp_table_minus1[ 0 ] seja igual a 0. delta_qp_in_val_minus1[ i ][ j ] especifica um valor delta usado para derivar a coordenada de entrada do j-ésimo ponto pivô da i-ésima tabela de mapeamento de QP de croma. Quando delta_qp_in_val_minus1[ 0 ][ j ] não está presente no fluxo de bits, infere-se que o valor de delta_qp_in_val_minus1[ 0 ][ j ] seja igual a 0. delta_qp_out_val[ i ][ j ] especifica um valor de delta usado para derivar a coordenada de saída do j-ésimo ponto pivô da i-ésima tabela de mapeamento de QP de croma. Quando delta_qp_out_val[ 0 ][ j ] não está presente no fluxo de bits, infere-se que o valor de delta_qp_out_val[ 0 ][ j ] seja igual a 0.
[0259] Observa-se que, na presente revelação, os detalhes no exemplo da derivação da primeira tabela de mapeamento de QP de croma, da segunda tabela de mapeamento de QP de croma e da terceira tabela de mapeamento de QP de croma serão descritos a seguir.
[0260] A i-ésima tabela de mapeamento de QP de croma ChromaQpTable[ i ] para i = 0..same_qp_table_for_chroma ? 0 : 2 é derivado da seguinte maneira: qpInVal[ i ][ 0 ] = −QpBdOffsetC + delta_qp_in_val_minus1[ i ][ 0 ]
qpOutVal[ i ][ 0 ] = −QpBdOffsetC + delta_qp_out_val[ i ][ 0 ] for( j = 1; j <= num_points_in_qp_table_minus1[ i ]; j++ ) { qpInVal[ i ][ j ] = qpInVal[ i ][ j − 1 ] + delta_qp_in_val_minus1[ i ][ j ] + 1 qpOutVal[ i ][ j ] = qpOutVal[ i ][ j − 1 ] + delta_qp_out_val[ i ][ j ] } ChromaQpTable[ i ][ qpInVal[ i ][ 0 ] ] = qpOutVal[ i ][ 0 ] for( k = qpInVal[ i ][ 0 ] − 1; k >= −QpBdOffsetC; k − − ) ChromaQpTable[ i ][ k ] = Clip3( −QpBdOffsetC, 63, ChromaQpTable[ i ][ k + 1 ] − 1 ) (7-31) for( j = 0; j < num_points_in_qp_table_minus1[ i ]; j++ ) { sh = ( delta_qp_in_val_minus1[ i ][j + 1 ] + 2 ) >> 1 for( k = qpInVal[ i ][ j ] + 1, m = 1; k <= qpInval[ i ][ j + 1 ]; k++, m++ ) ChromaQpTable[ i ][ k ] = ChromaQpTable[ i ][ qpInVal[ i ][ j ] ] + ( delta_qp_out_val[ i ][j + 1] * m + sh ) / ( delta_qp_in_val_minus1[ i ][j + 1] + 1 ) } for( k = qpInVal[ i ][ num_points_in_qp_table_minus1[ i ] ] + 1; k <= 63; k++ ) ChromaQpTable[ i ][ k ] = Clip3( −QpBdOffsetC, 63, ChromaQpTable[ i ][ k − 1 ] + 1 )
[0261] Quando same_qp_table_for_chroma é igual a 1, ChromaQpTable[ 1 ][ k ] e ChromaQpTable[ 2 ][ k ] são definidos como iguais a ChromaQpTable[ 0 ][ k ] para k = −QpBdOffsetC..63.
[0262] É uma exigência de conformidade de fluxo de bits que os valores de qpInVal[ i ][ j ] e qpOutVal[ i ][ j ] devem estar na faixa de −QpBdOffsetC to 63, inclusive para i = 0..same_qp_table_for_chroma ? 0 : 2 e j = 0..num_points_in_qp_table_minus1[ i ].
[0263] Observa-se que tabela ChromaQPmapping também pode ser expressa usando uma fórmula simples que assume, como entrada, o valor de QP de luma (QPi) e o valor de componente de cor (cIdx) e, então, emite o valor de QP de croma correspondente (QPc). A fórmula pode retratar uma relação linear entre o QP de luma e QP de croma. Por exemplo, a fórmula pode ser da seguinte maneira: QPc = QPi – x em que x é constante dependente do valor de componente de cor (cIdx) e x pode assumir diferentes valores para diferentes índices de componente de cor incluindo o componente Cb-Cr em conjunto.
[0264] As modalidades do codificador de vídeo 20 (respectivamente unidade de filtro loop 220) podem ser configuradas para emitir parâmetros de filtro loop (tais como parâmetros de filtro SAO ou parâmetros de filtro ALF ou parâmetros LMCS), por exemplo, diretamente ou codificados por meio da unidade de codificação de entropia 270, de modo que, por exemplo, um decodificador 30 possa receber e aplicar os mesmos parâmetros de filtro loop ou respectivos filtros de loop para decodificação.
[0265] Buffer de Imagem Decodificada
[0266] O buffer de imagem decodificada (DPB) 230 pode ser uma memória que armazena imagens de referência ou, em geral, dados de imagem de referência, para codificação de dados de vídeo pelo codificador de vídeo 20. O DPB 230 pode ser formado por qualquer um dentre uma variedade de dispositivos de memória, tal como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. O buffer de imagem decodificada (DPB) 230 pode ser configurado para armazenar um ou mais blocos filtrados 221. O buffer de imagem decodificada 230 pode ser configurado, ainda, para armazenar outros blocos previamente filtrados, por exemplo, blocos previamente reconstruídos e filtrados 221, da mesma imagem atual ou de diferentes imagens, por exemplo, imagens previamente reconstruídas, e pode fornecer imagens completas previamente reconstruídas, isto é, decodificadas (e blocos e amostras de referência correspondentes) e/ou uma imagem atual parcialmente reconstruída (e blocos e amostras de referência correspondentes), por exemplo, para predição inter. O buffer de imagem decodificada (DPB) 230 também pode ser configurado para armazenar um ou mais blocos reconstruídos não filtrados 215 ou, em geral, amostras reconstruídas não filtradas, por exemplo, se o bloco reconstruído 215 não for filtrado pela unidade de filtro loop 220, ou qualquer outra versão processada dos blocos ou amostras reconstruídos.
[0267] Seleção de Modo (Particionamento & Predição)
[0268] A unidade de seleção de modo 260 compreende unidade de particionamento 262, unidade de predição inter 244 e unidade de predição intra 254, e é configurada para receber ou obter dados de imagem originais, por exemplo, um bloco original 203 (bloco atual 203 da imagem atual 17), e dados de imagem reconstruídos, por exemplo, blocos ou amostras reconstruídas filtradas e/ou não filtradas da mesma imagem (atual) e/ou de uma ou uma pluralidade de imagens previamente decodificadas, por exemplo, de buffer de imagem decodificada 230 ou outros armazenamentos temporários (por exemplo, buffer de linha, não mostrado). Os dados de imagem reconstruídos são usados como dados de imagem de referência para predição, por exemplo, predição inter ou predição intra, para obter um bloco de predição 265 ou preditor 265.
[0269] A unidade de seleção de modo 260 pode ser configurada para determinar ou selecionar um particionamento para um modo de predição de bloco atual (incluindo nenhum particionamento) e um modo de predição (por exemplo, um modo de predição intra ou inter) e gerar um bloco de predição correspondente 265, que é usado para o cálculo do bloco residual 205 e para a reconstrução do bloco reconstruído 215.
[0270] As modalidades da unidade de seleção de modo 260 podem ser configuradas para selecionar o modo de particionamento e predição (por exemplo, daqueles suportados por ou disponíveis para a unidade de seleção de modo 260), que fornecem a melhor compatibilidade ou, em outras palavras, o resíduo mínimo (resíduo mínimo significa melhor compressão para transmissão ou armazenamento), ou uma sobrecarga de sinalização mínima (sobrecarga de sinalização mínima significa melhor compressão para transmissão ou armazenamento), ou que considera ou equilibra ambos. A unidade de seleção de modo 260 pode ser configurada para determinar o modo de particionamento e predição com base em otimização de taxa distorção (RDO), isto é, selecionar o modo de predição que fornece uma taxa distorção mínima. Termos como “melhor”, “mínimo”, “ideal” etc. neste contexto não se referem, necessariamente, a um “melhor”, “mínimo”, “ideal”, etc. geral, mas também podem se referir à satisfação de um critério de término ou seleção, tal como um valor que excede ou está abaixo de um limiar ou outras restrições que levam potencialmente a uma “seleção inferior ao ideal” mas que reduzem a complexidade e o tempo de processamento.
[0271] Em outras palavras, a unidade de particionamento 262 pode ser configurada para particionar uma imagem de uma sequência de vídeo em uma sequência de unidades de árvore de codificação (CTUs), e a CTU 203 pode ser particionada em partições de bloco menores ou sub-blocos (que formam novamente blocos), por exemplo, usando, de modo iterativo, particionamento de quadtree (QT), particionamento binário (BT) ou particionamento 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 são aplicados a cada uma das partições de bloco ou sub-blocos.
[0272] A seguir, o particionamento (por exemplo, pela unidade de particionamento 260) e processamento de predição (pela unidade de predição inter 244 e unidade de predição intra 254) realizados por um codificador de vídeo exemplificativo 20 serão explicados em mais detalhes.
[0273] Particionamento
[0274] A unidade de particionamento 262 pode ser configurada para particionar uma imagem de uma sequência de vídeo em uma sequência de unidades de árvore de codificação (CTUs), e a unidade de particionamento 262 pode particionar (ou dividir) uma unidade de árvore de codificação (CTU) 203 em partições menores, por exemplo, blocos menores de tamanho quadrangular ou retangular. Para uma imagem que tem três arranjos de amostra, uma CTU consiste em um bloco N×N de amostras de luma em conjunto com dois blocos correspondentes de amostras de croma. O tamanho máximo permitido do bloco de luma em uma CTU é especificado como 128×128 na codificação de vídeo versátil (VVC) em desenvolvimento, mas pode ser especificado como valor em vez de 128x128 no futuro, por exemplo, 256x256. As CTUs de uma imagem podem ser reunidas/agrupadas em fatias/grupos de tile, tiles ou bricks. Um tile abrange uma região retangular de uma imagem, e um tile pode ser dividido em um ou mais bricks. Um brick consiste em um número de linhas de CTU dentro de um tile. Um tile que não é particionado em múltiplos bricks pode ser denominado um brick. Entretanto, um brick é um subconjunto verdadeiro de um tile e não é denominado um tile.
[0275] Há dois modos de grupos tile que são suportados em VVC, a saber, o modo de fatia/grupo tile de varredura raster e o modo de fatia retangular. No modo de grupo tile de varredura raster, uma fatia/grupo tile contém uma sequência de tiles em varredura raster de tile de uma imagem. No modo de fatia retangular, uma fatia contém um número de bricks de uma imagem que formam, coletivamente, uma região retangular da imagem. Os bricks dentro de uma fatia retangular estão na ordem de varredura raster de brick da fatia. Esses blocos menores (que também podem ser denominados sub-blocos) podem ser particionados em partições ainda menores. Isso também é denominado particionamento de árvore ou particionamento de árvore hierárquico, em que um bloco raiz, por exemplo, no nível 0 de árvore-raiz (nível de hierarquia 0, profundidade 0), pode ser particionado de modo recursivo, por exemplo, particionado em dois ou mais blocos de um próximo nível de árvore inferior, por exemplo, nós no nível de árvore 1 (nível de hierarquia 1, profundidade 1), em que esses blocos podem ser particionados novamente em dois ou mais blocos de um próximo nível inferior, por exemplo, nível de árvore 2 (nível de hierarquia 2, profundidade 2), etc. até que o particionamento termine, por exemplo, visto que um critério de término é satisfeito, por exemplo, uma profundidade de árvore máxima ou tamanho de bloco mínimo é alcançado. Os blocos que não são particionados ainda mais também são denominados blocos-folha ou nós-folha da árvore. Uma árvore que usa particionamento em duas partições é denominada árvore binária (BT), uma árvore que usa particionamento em três partições é denominada árvore ternária (TT) e uma árvore que usa particionamento em quatro partições é denominada quadtree (QT).
[0276] Por exemplo, uma unidade de árvore de codificação (CTU) pode ser ou compreender um CTB de amostras de luma, dois CTBs correspondentes de amostras de croma de uma imagem que tem três arranjos de amostra, ou um CTB de amostras de uma imagem monocromática ou uma imagem que é codificada usando três planos de cores separados e estruturas de sintaxe usadas para codificar as amostras. De modo correspondente, um bloco de árvore de codificação (CTB) pode ser um bloco NxN de amostras para algum valor de N de modo que a divisão de um componente em CTBs seja um particionamento. Uma unidade de codificação (CU) pode ser ou compreender um bloco de codificação de amostras de luma, dois blocos de codificação correspondentes de amostras de croma de uma imagem que tem três arranjos de amostra, ou um bloco de codificação de amostras de uma imagem monocromática ou uma imagem que é codificada usando três planos de cores separados e estruturas de sintaxe usadas para codificar as amostras. De modo correspondente, um bloco de codificação (CB) pode ser um bloco MxN de amostras para alguns valores de M e N de modo que a divisão de um CTB em blocos de codificação seja um particionamento.
[0277] Em modalidades, por exemplo, de acordo com HEVC, uma unidade de árvore de codificação (CTU) pode ser dividida em CUs usando-se uma estrutura de quadtree denotada árvore de codificação. A decisão de codificar ou não uma área de imagem com o uso de predição de imagem inter (temporal) ou imagem intra (espacial) é feita no nível de CU folha. Cada CU folha pode ser dividida, de modo adicional, 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 para o decodificador com base em PU. Após obter o bloco residual aplicando-se o processo de predição com base no tipo de divisão de PU, uma CU folha pode ser particionada em unidades de transformada (TUs) de acordo com outra estrutura de quadtree similar à árvore de codificação para a CU.
[0278] Em modalidades, por exemplo, de acordo com o padrão de codificação de vídeo mais recente atualmente em desenvolvimento, que é denominado Codificação de Vídeo Versátil (VVC), uma árvore de múltiplos tipos aninhada de Quadtree combinada com o uso de estrutura de segmentação de divisão binária e ternária, por exemplo, usada para particionar uma unidade de árvore de codificação. Na estrutura de árvore de codificação dentro de uma unidade de árvore de codificação, uma CU pode ter um formato quadrangular ou retangular. Por exemplo, a unidade de árvore de codificação (CTU) é primeiro particionada por uma árvore quaternária. Então, os nós-folha de árvore quaternária podem ser particionados, de modo adicional, por uma estrutura de árvore de múltiplos tipos. Há quatro tipos de divisão em estrutura de árvore de múltiplos tipos, divisão binária vertical (SPLIT_BT_VER), divisão binária horizontal (SPLIT_BT_HOR), divisão ternária vertical (SPLIT_TT_VER) e divisão ternária horizontal (SPLIT_TT_HOR). Os nós-folha de árvore de múltiplos tipos são denominados unidades de codificação (CUs) e, a menos que a CU seja muito grande para o comprimento máximo de transformada, essa segmentação é usada para predição e processamento de transformada sem qualquer particionamento adicional.
Isso significa que, na maioria dos casos, a CU, PU e TU têm o mesmo tamanho de bloco na árvore quadtree com estrutura de bloco de codificação de árvore de múltiplos tipos aninhada.
A exceção ocorre quando comprimento de transformada máximo suportado é menor do que a largura ou altura do componente de cor da CU.
VVC desenvolve um mecanismo de sinalização único das informações de divisão por partição em quadtree com estrutura de árvore de codificação de árvore de múltiplos tipos aninhada.
No mecanismo de sinalização, uma unidade de árvore de codificação (CTU) é tratada como a raiz de uma árvore quaternária e é primeiro particionada por uma estrutura de árvore quaternária.
Cada nó-folha de árvore quaternária (quando suficientemente grande para permitir isso) é, então, particionado, de modo adicional, por uma estrutura de árvore de múltiplos tipos.
Na estrutura de árvore de múltiplos tipos, um primeira flag (mtt_split_cu_flag) é sinalizado para indicar se o nó é particionado de modo adicional; quando um nó é particionado de modo adicional, um segunda flag (mtt_split_cu_vertical_flag) é sinalizado para indicar a direção de divisão e, então, um terceira flag (mtt_split_cu_binary_flag) é sinalizado para indicar se a divisão é uma divisão binária ou uma divisão ternária.
Com base nos valores de mtt_split_cu_vertical_flag e mtt_split_cu_binary_flag, o modo de divisão de árvore de múltiplos tipos (MttSplitMode) de uma CU pode ser derivado por um decodificador com base em uma regra predefinida ou uma tabela.
Deve-se observar, para um determinado projeto, por exemplo, projeto de pipelining Croma 32×32 e bloco de luma 64×64 em decodificadores de hardware VVC, divisão TT é proibida quando largura ou altura de um bloco de codificação de luma é maior do que 64, conforme mostrado na Figura 6. Divisão TT também é proibida quando largura ou altura de um bloco de codificação de croma é maior do que 32. O projeto pipelining dividirá uma imagem em unidades de dados pipeline Virtual s(VPDUs) que são definidas como unidades não sobrepostas em uma imagem.
Em decodificadores de hardware, VPDUs sucessivas são processadas por múltiplos estágios de pipeline simultaneamente.
O tamanho de VPDU é aproximadamente proporcional ao tamanho de buffer na maioria dos estágios de pipeline, então, é importante manter pequeno o tamanho de VPDU.
Na maioria dos decodificadores de hardware, o tamanho de VPDU pode ser definido para tamanho máximo de bloco de transformada (TB). Entretanto, em
VVC, partição de árvore ternária (TT) e árvore binária (BT) pode levar ao aumento de tamanho das VPDUs.
[0279] Além disso, deve-se observar que, quando uma porção de um bloco de nó de árvore excede a fronteira de imagem inferior ou direita, o bloco de nó de árvore é forçado a ser dividido até que todas as amostras de cada CU codificada estejam localizadas dentro das fronteiras de imagem.
[0280] Conforme um exemplo, a ferramenta SubPartições Intra (ISP) pode dividir blocos de luma preditos de modo intra de forma vertical ou horizontal em 2 ou 4 subpartições dependendo do tamanho de bloco.
[0281] Em um exemplo, a unidade de seleção de modo 260 do codificador de vídeo 20 pode ser configurada para realizar qualquer combinação das técnicas de particionamento descritas no presente documento.
[0282] Conforme descrito acima, o codificador de vídeo 20 é configurado para determinar ou selecionar o melhor modo de predição ou um modo de predição ideal a partir de um conjunto de modos de predição (por exemplo, pré-determinados). O conjunto de modos de predição pode compreender, por exemplo, modos de predição intra e/ou modos de predição inter.
[0283] Predição intra
[0284] O conjunto de modos de predição intra pode compreender 35 modos de predição intra diferentes, por exemplo, modos não direcionais como o modo DC (ou média) e modo plano, ou modos direcionais, por exemplo, conforme definido em HEVC, ou pode compreender 67 modos de predição intra diferentes, por exemplo, modos não direcionais, como o modo DC (ou média) e modo plano, ou modos direcionais, por exemplo, conforme definido para VVC. Conforme um exemplo, alguns modos de predição intra angulares convencionais são substituídos, de modo adaptativo, por modos de predição intra de ângulo amplo para os blocos não quadrangulares, por exemplo, conforme definido em VVC. Conforme outro exemplo, para evitar operações de divisão para predição de DC, apenas o lado mais longo é usado para computar a média para blocos não quadrangulares. E, os resultados de predição intra de modo plano podem ser modificados, de modo adicional, por um método de combinação de predição intra dependente de posição (PDPC).
[0285] A unidade de predição intra 254 é configurada para usar amostras reconstruídas de blocos vizinhos da mesma imagem atual para gerar um bloco de predição intra 265 de acordo com um modo de predição intra do conjunto de modos de predição intra.
[0286] A unidade de predição intra 254 (ou, em geral, a unidade de seleção de modo 260) é configurada, ainda, para emitir parâmetros de predição intra (ou, em geral, informações indicativas do modo de predição intra selecionado para o bloco) para a unidade de codificação de entropia 270 na forma de elementos de sintaxe 266 para inclusão nos dados de imagem codificados 21, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e usar os parâmetros de predição para decodificação.
[0287] Predição inter
[0288] O conjunto de (ou possíveis) modos de predição inter depende das imagens de referência disponíveis (isto é, imagens prévias pelo menos parcialmente decodificadas, por exemplo, armazenadas em DPB 230) e outros parâmetros de predição inter, por exemplo, se toda a imagem de referência ou apenas uma parte, por exemplo, uma área de janela de busca ao redor da área do bloco atual, da imagem de referência é usada para buscar um bloco de referência de melhor compatibilidade, e/ou, por exemplo, se interpolação de pixel é aplicada, por exemplo, interpolação meia/semi-pel, um quarto-pel e/ou 1/16 pel, ou não.
[0289] De modo adicional aos modos de predição acima, modo de ocultação, modo direto e/ou outro modo de predição inter podem ser aplicados.
[0290] Por exemplo, predição de fusão estendida, a lista de candidato de fusão de tal modo é construída incluindo os seguintes cinco tipos de candidatos em ordem: MVP Espacial de CUs vizinhas espaciais, MVP Temporal de CUs colocalizadas, MVP com base em Histórico a partir de uma tabela FIFO, MVP de média em pares e MVs Zero. E um refinamento de vetor de movimento de lado de decodificador com base em correspondência bilateral (DMVR) pode ser aplicado para aumentar a acurácia dos MVs do modo de fusão. O modo de fusão com MVD (MMVD), que resulta do modo de fusão com diferenças de vetor de movimento. Uma flag de MMVD é sinalizado logo após enviar uma flag de ocultação e flag de fusão para especificar se modo MMVD é usado para uma CU. E um esquema de resolução de vetor de movimento adaptativo de nível de CU (AMVR) pode ser aplicado. AMVR permite que MVD da CU seja codificado em diferentes precisões. Dependendo do modo de predição para a CU atual, os MVDs da CU atual podem ser selecionados de modo adaptativo. Quando uma CU é codificada em modo de fusão, o modo de predição inter/intra combinado (CIIP) pode ser aplicado à CU atual. A média ponderada dos sinais de predição inter e intra é realizada para obter a predição de CIIP. Predição compensada por movimento afim, o campo de movimento afim do bloco é descrito por informações de movimento de vetores de movimento de dois pontos de controle (4-parâmetro) ou três pontos de controle (6-parâmetro). A predição de vetor de movimento temporal com base em sub-bloco (SbTMVP), que é similar à predição de vetor de movimento temporal (TMVP) em HEVC, mas prediz os vetores de movimento das sub-CUs dentro da CU atual. Fluxo óptico bidirecional (BDOF), previamente denominado BIO, é uma versão mais simples que exige muito menos computação, especialmente em termos de número de multiplicações e do tamanho do multiplicador. O modo de partição de triângulo, em tal modo, uma CU é dividida de modo uniforme em duas partições em formato de triângulo, com o uso da divisão diagonal ou da divisão anti-diagonal. Além disso, o modo bipredição é estendido além de média simples para permitir média ponderada dos dois sinais de predição.
[0291] A unidade de predição inter 244 pode incluir uma unidade de estimação de movimento (ME) e uma unidade de compensação de movimento (MC) (ambas não mostradas na Figura 2). A unidade de estimação de movimento pode ser configurada para receber ou obter o bloco de imagem 203 (bloco de imagem atual 203 da imagem atual 17) e uma imagem decodificada 231, ou pelo menos um ou uma pluralidade de blocos previamente reconstruídos, por exemplo, blocos reconstruídos de um ou uma pluralidade de outras/diferentes imagens previamente decodificadas 231, para estimação de movimento. Por exemplo, uma sequência de vídeo pode compreender a imagem atual e as imagens previamente decodificadas 231 ou, em outras palavras, a imagem atual e as imagens previamente decodificadas 231 podem ser parte de ou formar uma sequência de imagens que forma uma sequência de vídeo.
[0292] O codificador 20 pode ser configurado, por exemplo, para selecionar um bloco de referência de uma pluralidade de blocos de referência das mesmas imagens 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 predição inter para a unidade de estimação de movimento. Esse deslocamento também é denominado vetor de movimento (MV).
[0293] A unidade de compensação de movimento é configurada para obter, por exemplo, receber, um parâmetro de predição inter e realizar predição inter com base em ou com o uso do parâmetro de predição inter para obter um bloco de predição inter 265. A compensação de movimento, realizada pela unidade de compensação de movimento, pode envolver busca ou geração do bloco de predição com base no vetor de bloco/movimento determinado por estimação de movimento, possivelmente realizando interpolações com precisão de subpixel. A filtragem de interpolação pode gerar amostras de pixel adicionais a partir de amostras de pixel conhecidas, aumentando potencialmente, desse modo, o número de blocos de predição candidatos que pode ser usado para codificar um bloco de imagem. Mediante recepção do vetor de movimento para a PU do bloco de imagem atual, a unidade de compensação de movimento pode localizar o bloco de predição para o qual o vetor de movimento aponta em uma das listas de imagem de referência.
[0294] A unidade de compensação de movimento também pode gerar elementos de sintaxe associados aos blocos e fatias de vídeo para uso pelo decodificador de vídeo 30 na decodificação dos blocos de imagem da fatia de vídeo. De modo adicional ou alternativo a fatias e respectivos elementos de sintaxe, grupos de tile e/ou tiles e respectivos elementos de sintaxe podem ser gerados ou usados.
[0295] Codificação de Entropia
[0296] A unidade de codificação de entropia 270 é configurada para aplicar, por exemplo, um esquema ou algoritmo de codificação de entropia (por exemplo, um esquema de codificação de comprimento variável (VLC), um esquema de VLC adaptativo ao contexto (CAVLC), um esquema de codificação aritmética, uma binarização, uma codificação aritmética binária adaptativa ao contexto (CABAC), codificação aritmética binária adaptativa ao contexto com base 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) ou desvio (sem compressão) nos coeficientes quantizados 209,
parâmetros de predição inter, parâmetros de predição intra, parâmetros de filtro loop e/ou outros elementos de sintaxe para obter dados de imagem codificados 21 que podem ser emitidos por meio da saída 272, por exemplo, na forma de um fluxo de bits codificado 21, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e usar os parâmetros para decodificação. O fluxo de bits codificado 21 pode ser transmitido para o decodificador de vídeo 30, ou armazenado em uma memória para transmissão ou recuperação posterior pelo decodificador de vídeo 30.
[0297] Outras variações estruturais do codificador de vídeo 20 podem ser usadas para codificar o fluxo de vídeo. Por exemplo, um codificador com base em não transformada 20 pode quantizar o sinal residual diretamente sem a unidade de processamento de transformada 206 para determinados blocos ou quadros. Em outra implantação, um codificador 20 pode ter a unidade de quantização 208 e a unidade de quantização inversa 210 combinadas em uma única unidade.
[0298] Decodificador e Método de Decodificação
[0299] A Figura 3 mostra um exemplo de um decodificador de vídeo 30 que é configurado para implantar as técnicas deste presente pedido. O decodificador de vídeo 30 é configurado para receber dados de imagem codificados 21 (por exemplo, fluxo de bits codificado 21), por exemplo, codificados pelo codificador 20, para obter uma imagem decodificada 331. O fluxo de bits ou dados de imagem codificados compreendem informações para decodificar os dados de imagem codificados, por exemplo, dados que representam blocos de imagem de uma fatia de vídeo codificado (e/ou grupos de tile ou tiles) e elementos de sintaxe associados.
[0300] No exemplo da Figura 3, o decodificador 30 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), uma unidade de filtro loop 320, um buffer de imagem decodificada (DPB) 330, uma unidade de aplicação de modo 360, uma unidade de predição inter 344 e uma unidade de predição intra 354. A unidade de predição inter 344 pode ser ou incluir uma unidade de compensação de movimento. O decodificador de vídeo 30 pode realizar, em alguns exemplos, uma passa de decodificação geralmente recíproca à passa de codificação descrita em relação ao codificador de vídeo 100 da Figura 2.
[0301] Conforme explicado em relação ao codificador 20, a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, a unidade de filtro loop 220, o buffer de imagem decodificada (DPB) 230, a unidade de predição inter 344 e a unidade de predição intra 354 também são referidos como que formam o “decodificador interno” do codificador de vídeo 20. Assim, 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 212, a unidade de reconstrução 314 pode ser idêntica em função à unidade de reconstrução 214, a unidade de filtro loop 320 pode ser idêntica em função à unidade de filtro loop 220, e o buffer de imagem decodificada 330 pode ser idêntico em função ao buffer de imagem decodificada 230. Portanto, as explicações fornecidas para as respectivas unidades e funções do codificador de vídeo 20 se aplicam, de modo correspondente, às respectivas unidades e funções do decodificador de vídeo
30.
[0302] Decodificação de Entropia
[0303] A unidade de decodificação de entropia 304 é configurada para analisar o fluxo de bits 21 (ou, em geral, dados de imagem codificados 21) e realizar, por exemplo, decodificação de entropia nos dados de imagem codificados 21 para obter, por exemplo, coeficientes quantizados 309 e/ou parâmetros de codificação decodificados (não mostrados na Figura 3), por exemplo, qualquer um ou todos os parâmetros de predição inter (por exemplo, índice de imagem de referência e vetor de movimento), parâmetro de predição intra (por exemplo, índice ou modo de predição intra), parâmetros de transformada, parâmetros de quantização, parâmetros de filtro loop e/ou outros elementos de sintaxe. A unidade de decodificação de entropia 304 pode ser configurada para aplicar os algoritmos ou esquemas de decodificação que correspondem aos esquemas de codificação, conforme descrito em relação à unidade de codificação de entropia 270 do codificador 20. A unidade de decodificação de entropia 304 pode ser configurada, ainda, para fornecer parâmetros de predição inter, parâmetro de predição intra e/ou outros elementos de sintaxe à unidade de aplicação de modo 360 e outros parâmetros para outras unidades do decodificador 30. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou no nível de bloco de vídeo. De modo adicional ou alternativo a fatias e respectivos elementos de sintaxe, grupos de tile e/ou tiles e respectivos elementos de sintaxe podem ser recebidos e/ou usados.
[0304] Quantização Inversa
[0305] A unidade de quantização inversa 310 pode ser configurada para receber parâmetros de quantização (QP) (ou, em geral, informações relacionadas à quantização inversa) e coeficientes quantizados dos dados de imagem codificados 21 (por exemplo, por análise e/ou decodificação, por exemplo, pela unidade de decodificação de entropia 304) e para aplicar, com base nos parâmetros de quantização, uma quantização inversa nos coeficientes quantizados decodificados 309 para obter coeficientes desquantizados 311, que também podem ser denominados coeficientes de transformada 311. O processo de quantização inversa pode incluir o uso de um parâmetro de quantização determinado pelo codificador de vídeo 20 para cada bloco de vídeo na fatia de vídeo (ou tile ou grupo de tile) para determinar um grau de quantização e, de modo similar, um grau de quantização inversa que devem ser aplicados.
[0306] Transformada Inversa
[0307] A unidade de processamento de transformada inversa 312 pode ser configurada para receber coeficientes desquantizados 311, também denominados coeficientes de transformada 311, e para aplicar uma transformada aos coeficientes desquantizados 311 a fim de obter blocos residuais reconstruídos 213 no domínio de amostra. Os blocos residuais reconstruídos 213 também podem ser denominados blocos de transformada
313. A transformada pode ser uma transformada inversa, por exemplo, uma DCT inversa, uma DST inversa, uma transformada de número inteiro inversa ou um processo de transformada inversa conceitualmente similar. A unidade de processamento de transformada inversa 312 pode ser configurada, ainda, para receber parâmetros de transformada ou informações correspondentes dos dados de imagem codificados 21 (por exemplo, por análise e/ou decodificação, por exemplo, pela unidade de decodificação de entropia 304) para determinar que a transformada seja aplicada aos coeficientes desquantizados 311.
[0308] Reconstrução
[0309] A unidade de reconstrução 314 (por exemplo, adicionador ou somador 314) pode ser configurada para adicionar o 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-se os valores de amostra do bloco residual reconstruído 313 e os valores de amostra do bloco de predição 365.
[0310] Filtragem
[0311] A unidade de filtro loop 320 (tanto no loop de codificação ou após o loop de codificação) é configurada para filtrar o bloco reconstruído 315 para obter um bloco filtrado 321, por exemplo, suavizar transições de pixel ou, de outro modo, aperfeiçoar a qualidade de vídeo. A unidade de filtro loop 320 pode compreender um ou mais filtros loop, tais como um filtro de desblocagem, um filtro de deslocamento adaptativo de amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro loop adaptativo (ALF), um filtro de supressão de ruído (NSF) ou qualquer combinação dos mesmos. Em um exemplo, a unidade de filtro loop 220 pode compreender um filtro de desblocagem, um filtro SAO e um filtro ALF. A ordem do processo de filtragem pode ser o filtro de desblocagem, SAO e ALF. Em outro exemplo, um processo denominado o mapeamento de luma com escala croma (LMCS) (a saber, o remodelador em loop adaptativo) é adicionado. Esse processo é realizado antes de desblocagem. Em outro exemplo, o processo de filtro de desblocagem também pode ser aplicado a bordas de sub-bloco internas, por exemplo, bordas de sub-blocos afim, bordas de sub-blocos ATMVP, bordas de transformada de sub-bloco (SBT) e bordas de subpartição intra (ISP). Embora a unidade de filtro loop 320 seja mostrada na Figura 3 como sendo um filtro in-loop, em outras configurações, a unidade de filtro loop 320 pode ser implantada como um filtro post-loop.
[0312] Buffer de Imagem Decodificada
[0313] Os blocos de vídeo decodificados 321 de uma imagem são, então, armazenados em buffer de imagem decodificada 330, que armazena as imagens decodificadas 331 como imagens de referência para compensação de movimento subsequente para outras imagens e/ou para emitir respectivamente display.
[0314] O decodificador 30 é configurado para emitir a imagem decodificada 311, por exemplo, por meio da saída 312, para apresentação ou visualização por um usuário.
[0315] Predição
[0316] A unidade de predição inter 344 pode ser idêntica à unidade de predição inter 244 (em particular, à unidade de compensação de movimento) e a unidade de predição intra 354 pode ser idêntica à unidade de predição intra 254 em função, e realiza decisões de divisão ou particionamento e predição com base nos parâmetros de particionamento e/ou predição ou respectivas informações recebidas dos dados de imagem codificados 21 (por exemplo, por análise e/ou decodificação, por exemplo, pela unidade de decodificação de entropia 304). A unidade de aplicação de modo 360 pode ser configurada para realizar a predição (predição intra ou inter) por bloco com base em imagens reconstruídas, blocos ou respectivas amostras (filtradas ou não filtradas) para obter o bloco de predição 365.
[0317] Quando a fatia de vídeo é codificada como uma fatia codificada de modo intra (I), a unidade de predição intra 354 da unidade de aplicação de modo 360 é configurada para gerar bloco de predição 365 para um bloco de imagem da fatia de vídeo atual com base em um modo de predição intra sinalizado e em dados de blocos previamente decodificados da imagem atual. Quando a imagem de vídeo é codificada como uma fatia codificada de modo inter (isto é, B ou P), a unidade de predição inter 344 (por exemplo, unidade de compensação de movimento) da unidade de aplicação de modo 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 em outros elementos de sintaxe recebidos da unidade de decodificação de entropia 304. Para predição inter, os blocos de predição podem ser produzidos a partir de uma dentre as imagens de referência dentro de uma dentre as listas de imagem de referência. O decodificador de vídeo 30 pode construir as listas de quadro de referência, Lista 0 e Lista 1, com o uso de técnicas de construção padrão com base em imagens de referência armazenadas no DPB 330. O mesmo ou similar pode ser aplicado para ou por modalidades com o uso de grupos de tile (por exemplo, grupos de tile de vídeo) e/ou tiles (por exemplo, tiles de vídeo) de modo adicional ou alternativo a fatias (por exemplo, fatias de vídeo), por exemplo, um vídeo pode ser codificado com o uso de grupos de tile I, P ou B e/ou tiles.
[0318] A unidade de aplicação de modo 360 é configurada para determinar as informações de predição para um bloco de vídeo da fatia de vídeo atual analisando-se os vetores de movimento ou informações relacionadas 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 aplicação de modo 360 usa alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, predição intra ou inter) usado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de predição inter (por exemplo, fatia B, fatia P ou fatia GPB), informações de construção para uma ou mais das listas de imagem de referência para a fatia, vetores de movimento para cada bloco de vídeo codificado de modo inter da fatia, status de predição inter para cada bloco de vídeo codificado de modo inter da fatia, e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual. O mesmo ou similar pode ser aplicado para ou por modalidades com o uso de grupos de tile (por exemplo, grupos de tile de vídeo) e/ou tiles (por exemplo, tiles de vídeo) de modo adicional ou alternativo a fatias (por exemplo, fatias de vídeo), por exemplo, um vídeo pode ser codificado com o uso de grupos de tile I, P ou B e/ou tiles.
[0319] As modalidades do decodificador de vídeo 30, conforme mostrado na Figura 3, podem ser configuradas para particionar e/ou decodificar a imagem usando-se fatias (também denominadas fatias de vídeo), em que uma imagem pode ser particionada em ou decodificada com o uso de uma ou mais fatias (tipicamente não sobrepostas), e cada fatia pode compreender um ou mais blocos (por exemplo, CTUs) ou um ou mais grupos de blocos (por exemplo, tiles (H.265/HEVC e VVC) ou bricks (VVC)).
[0320] As modalidades do decodificador de vídeo 30, conforme mostrado na Figura 3, podem ser configuradas para particionar e/ou decodificar a imagem usando-se fatias/grupos tile (também denominados grupos tile de vídeo) e/ou tiles (também denominados tiles de vídeo), em que uma imagem pode ser particionada em ou decodificada usando uma ou mais fatias/grupos de tile (tipicamente não sobrepostos), e cada fatia/grupo de tile pode compreender, por exemplo, um ou mais blocos (por exemplo, CTUs) ou um ou mais tiles, em que cada tile, por exemplo, pode ter formato retangular e pode compreender um ou mais blocos (por exemplo, CTUs), por exemplo, blocos completos ou fracionados.
[0321] Outras variações do decodificador de vídeo 30 podem ser usadas para decodificar os dados de imagem codificados 21. Por exemplo, o decodificador 30 pode produzir o fluxo de vídeo de saída sem a unidade de filtro loop 320. Por exemplo, um decodificador com base em não transformada 30 pode quantizar de modo inverso o sinal residual diretamente sem a unidade de processamento de transformada inversa 312 para determinados blocos ou quadros. Em outra implantação, o decodificador de vídeo 30 pode ter a unidade de quantização inversa 310 e a unidade de processamento de transformada inversa 312 combinadas em uma única unidade.
[0322] Deve-se entender que, no codificador 20 e no decodificador 30, um resultado de processamento de uma etapa atual pode ser processado de modo adicional e, então, emitido para a próxima etapa. Por exemplo, após filtragem de interpolação, derivação de vetor de movimento ou filtragem loop, uma operação adicional, tal como Clip ou desvio, pode ser realizada no resultado de processamento da filtragem de interpolação, derivação de vetor de movimento ou filtragem loop.
[0323] Deve-se observar que operações adicionais podem ser aplicadas aos vetores de movimento derivados de bloco atual (incluindo, mas sem limitação, vetores de movimento de ponto de controle de modo afim, vetores de movimento de sub-bloco em modos afim, plano, ATMVP, vetores de movimento temporal e assim por diante). Por exemplo, o valor de vetor de movimento é restrito para uma faixa predefinida de acordo com seu bit de representação. Se o bit de representação de vetor de movimento for bitDepth, então, a faixa é -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, em que “^” significa exponenciação. Por exemplo, se bitDepth for definido como igual a 16, a faixa é -32768 ~ 32767; se bitDepth for definido como igual a 18, a faixa é - 131072~131071. Por exemplo, o valor do vetor de movimento derivado (por exemplo, os MVs de quatro sub-blocos 4x4 dentro de um bloco 8x8) é restrito de modo que a diferença máx entre partes de número inteiro dos MVs de quatro sub-blocos 4x4 não seja maior do que N pixels, tal como não maior do que 1 pixel. O presente documento fornece dois métodos para restringir o vetor de movimento de acordo com a bitDepth.
[0324] A Figura 4 é um diagrama esquemático de um dispositivo de codificação de vídeo 400, de acordo com uma modalidade da revelação. O dispositivo de codificação de vídeo 400 é adequado para implantar as modalidades reveladas, conforme descrito no presente documento. Em uma modalidade, o dispositivo de codificação de vídeo 400 pode ser um decodificador, tal como decodificador de vídeo 30, da Figura 1A, ou um codificador, tal como codificador de vídeo 20, da Figura 1A.
[0325] O dispositivo de codificação de vídeo 400 compreende portas de ingresso 410 (ou portas de entrada 410) e unidades receptoras (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 (ou portas de saída 450) para transmitir os dados; e uma memória 460 para armazenar os dados. O dispositivo de codificação de vídeo 400 também pode compreender componentes ópticos para elétricos (OE) e componentes elétricos para ópticos (EO) acoplados às portas de ingresso 410, às unidades receptoras 420, às unidades transmissoras 440 e às portas de egresso 450 para egresso ou ingresso de sinais ópticos ou elétricos.
[0326] O processador 430 é implantado por hardware e software. O processador 430 pode ser implantado como um ou mais chips de CPU, núcleos (por exemplo, como um processador de múltiplos núcleos), FPGAs, ASICs e DSPs. O processador 430 está em comunicação com as portas de ingresso 410, unidades receptoras 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 implanta as modalidades reveladas descritas acima. Por exemplo, o módulo de codificação 470 implanta, processa, prepara ou fornece as várias operações de codificação. A inclusão do módulo de codificação 470 fornece, portanto, um aperfeiçoamento substancial à funcionalidade do dispositivo de codificação de vídeo 400 e efetua uma transformação do dispositivo de codificação de vídeo 400 para um estado diferente. De modo alternativo, o módulo de codificação 470 é implantado como instruções armazenadas na memória 460 e executadas pelo processador 430.
[0327] A memória 460 pode compreender 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 sobrefluxo, 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 de programa. A memória 460 pode ser, por exemplo, volátil e/ou não volátil e pode ser uma memória somente leitura (ROM), memória de acesso aleatório (RAM), memória ternária de conteúdo endereçável (TCAM) e/ou memória de acesso aleatório estática (SRAM).
[0328] A Figura 5 é um diagrama de blocos simplificado de um aparelho 500 que pode ser usado como um ou ambos dentre o dispositivo de origem 12 e o dispositivo de destino 14 da Figura 1A, de acordo com uma modalidade exemplificativa.
[0329] Um processador 502, no aparelho 500, pode ser uma unidade central de processamento. De modo alternativo, o processador 502 pode ser qualquer outro tipo de dispositivo, ou múltiplos dispositivos, com a capacidade de manipular ou processar informações já existentes ou posteriormente desenvolvidas. Embora as implantações reveladas possam ser colocadas em prática com um único processador conforme mostrado, por exemplo, o processador 502, as vantagens quanto à velocidade e eficiência podem ser alcançadas com o uso de mais de um processador.
[0330] 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 implantaçã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 com o uso de um barramento 512. A memória 504 pode incluir, ainda, um sistema operacional 508 e programas de aplicativo 510, em que os programas de aplicativo 510 incluem pelo menos um programa que permite que o processador 502 realize os métodos descritos no presente documento. Por exemplo, os programas de aplicativo 510 podem incluir aplicativos 1 a N, que incluem, ainda, uma aplicação de codificação de vídeo que realiza os métodos descritos no presente documento.
[0331] O aparelho 500 também pode incluir um ou mais dispositivos de saída, tais como um display 518. O display 518 pode ser, em um exemplo, um display sensível ao toque que combina um display com um elemento sensível ao toque que é operável para detectar entradas por meio de toque. O display 518 pode ser acoplado ao processador 502 por meio do barramento 512.
[0332] Embora retratado no presente documento como um único barramento, o barramento 512 do aparelho 500 pode ser composto por múltiplos barramentos. De modo adicional, o armazenamento secundário 514 pode ser acoplado diretamente aos outros componentes do aparelho 500 ou pode ser acessado por meio de uma rede e pode compreender uma única unidade integrada, tal como um cartão de memória ou múltiplas unidades, tais como múltiplos cartões de memória. O aparelho 500 pode ser implantado, desse modo, em uma grande variedade de configurações.
[0333] O conteúdo a seguir descreve as modalidades da presente invenção com referência aos desenhos anexos do relatório descritivo. Deve-se entender que as modalidades descritas na presente invenção são apenas usadas para descrever e explicar a presente invenção, mas não se destinam a limitar a presente invenção.
[0334] Os cenários exemplificativos para aplicar filtro de desblocagem são retratados nas Figuras 6A e 6B. Conforme mostrado na Figura 6A. Os blocos 601, 602, também denominados P, Q são dois blocos de codificação ou blocos de transformada, o tamanho das CU’s são amostras 16x4. Conforme mostrado nas Figuras 6A e 6B, a tecnologia apresentada na presente invenção se aplica a bordas verticais e horizontais.
[0335] A codificação de vídeo pode ser realizada com base em espaço de cor e formato de cor. Por exemplo, vídeo a cores realiza uma função importante em sistemas multimídia, em que vários espaços de cor são usados para representar a cor de modo eficiente. Um espaço de cor especifica cor com valores numéricos usando múltiplos componentes. Um espaço de cor popular é o espaço de cor RGB, em que a cor é representada como uma combinação de três valores de componente de cor primário (isto é, vermelho, verde e azul). Para compressão de vídeo a cores, o espaço de cor YCbCr tem sido amplamente usado, conforme descrito em A. Ford e A. Roberts, “Colour space conversions,” University of Westminster, London, Tech. Rep., August 1998.
[0336] YCbCr pode ser facilmente convertido a partir do espaço de cor RGB através de uma transformação linear e a redundância entre diferentes componentes, a saber, a redundância de componente cruzado, é reduzida de maneira significativa no espaço de cor YCbCr. Uma vantagem de YCbCr é a compatibilidade reversa com TV preto e branca visto que sinal Y transporta informações de luminância. Além disso, a largura de banda de crominância pode ser reduzida subamostrando-se os componentes Cb e Cr em formato de amostragem croma 4:2:0 com significativamente menos impacto subjetivo do que subamostragem no espaço de cor RGB. Devido a essas vantagens, YCbCr tem sido o principal espaço de cor em compressão de vídeo. Há também outros espaços de cor, tais como YCoCg, usados em compressão de vídeo. Nesta revelação, independentemente do espaço de cor real usado, o luma (ou L ou Y) e dois croma (Cb e Cr) são usados para representar os três componentes de cor no esquema de compressão de vídeo.
[0337] Por exemplo, quando a estrutura de amostragem de formato croma for amostragem 4:2:0, cada um dentre os dois arranjos croma tem metade da altura e metade da largura do arranjo luma. Um exemplo das localizações relativas vertical e horizontal nominais de amostras de luma e croma em imagens é mostrado na Figura 7A. A Figura 7B ilustra um exemplo de amostragem 4:2:0. A Figura 7B ilustra um exemplo de um bloco de luma colocalizado e um bloco de croma. Se o formato de vídeo for YUV4:2:0, então, há um bloco de luma 16x16 e dois blocos de croma 8x8.
[0338] Especificamente, um bloco de codificação ou um bloco de transformada contém um bloco de luma e dois blocos de croma.
[0339] Conforme mostrado, o bloco de luma contém quatro vezes as amostras do bloco de croma. Especificamente, o bloco de croma contém N número de amostras por N número de amostras enquanto o bloco de luma contém 2N número de amostras por 2N número de amostras. Portanto, o bloco de luma é quatro vezes a resolução do bloco de croma. Por exemplo, quando formato YUV4:2:0 é usado, as amostras de luma podem ser subamostradas por um fator de quatro (por exemplo, largura por dois, e altura por dois). YUV é um sistema de codificação de cor que emprega um espaço de cor em termos de componentes luma Y e dois componentes de crominância U e V.
[0340] Um exemplo de um cenário para aplicar filtro de desblocagem para dois blocos de luma é retratado na Figura 8. Há uma borda de bloco de luma 803 entre um primeiro bloco de luma 801 de um primeiro bloco de imagem (601, 601’) e um segundo bloco de luma 802 de um segundo bloco de imagem (602, 602’).
[0341] Os cenários em que o filtro de desblocagem é aplicado para dois blocos de croma são retratados nas Figuras 9A a 9H. Figura 9A ilustra um bloco de croma P 901 de um primeiro bloco de imagem (601, 601’), um bloco de croma Q 902 de um segundo bloco de imagem (602, 602’), e uma borda de bloco de croma 903 à qual o filtro de desblocagem é aplicado. Conforme mostrado na Figura 9A, uma borda de bloco de croma vertical 903 entre blocos de croma 901, 902 é filtrada de acordo com a modalidade da presente invenção. Cada uma das Figuras 9B a 9H mostra um exemplo do bloco de croma para bloco de croma P e bloco de croma Q. Por exemplo, na Figura 9B, a borda de componente Cb vertical 913 entre componentes Cb 911, 912 é filtrada de acordo com a modalidade da presente invenção. Na Figura 9C, uma borda de componente Cr vertical 923 entre componentes Cr 921, 922 é filtrada de acordo com a modalidade da presente invenção.
[0342] No projeto anterior de desblocagem de VVC, sempre que um determinado bloco de croma (Cb ou Cr) usa ferramenta de codificação residual Cb-Cr em conjunto (JCCR), o QP correspondente usado no desblocagem de croma é derivado da tabela de mapeamento de ChromaQP projetada para componentes Cb e Cr individuais. Para os blocos codificados Cb-Cr em conjunto ou componentes Cb-Cr em conjunto, o uso da ChromaQPTable projetada para componentes Cb e Cr pode resultar em derivação de QP de croma errada e, portanto, as decisões de desblocagem e/ou processo de desblocagem (que depende do valor de QP de croma) são afetadas. Isso resulta em decisões de desblocagem e/ou processo de desblocagem não acurado e, portanto, pode levar a artefatos de blocagem remanescentes na imagem, que afeta a qualidade visual geral da imagem codificada.
[0343] No projeto de desblocagem anterior de Codificação de Vídeo Versátil (VVC), o QP de croma é derivado da seguinte maneira:
[0344] As variáveis QpQ e QpP são definidas como iguais aos valores QpY das unidades de codificação que incluem os blocos de codificação contendo a amostra q0,0 e p0,0, respectivamente. Pode-se entender que a variável Qp Q representa o valor QpY para um bloco de luma correspondente Q, e a variável QpP representa o valor QpY para um bloco de luma correspondente P.
[0345] A variável QpC é derivada da seguinte maneira: qPi = Clip3( 0, 63, ( ( QpQ + QpP + 1 ) >> 1 ) + cQpPicOffset ) (8-1132) QpC = ChromaQpTable[ cIdx − 1 ][ qPi ] (8-1133)
[0346] Portanto, o valor de QP de croma usado em desblocagem de croma é basicamente derivado promediando os valores de QP de luma e, então, a ChromaQPtable é usada para mapear o QP de luma promediado para QP de croma.
[0347] O problema do esquema de desblocagem anterior é que, para blocos codificados residuais Cb-Cr em conjunto (JCCR) ou componentes Cb-Cr em conjunto, o mapeamento de QP de croma também é realizado usando a ChromaQPtable que é especificamente projetada para os componentes Cb e Cr.
[0348] As modalidades da presente invenção visam aperfeiçoar a filtragem de desblocagem convencional. A revelação apresentada na presente invenção envolve um aparelho de filtro de desblocagem, um codificador, um decodificador e métodos correspondentes que podem realizar desblocagem de uma borda de bloco de croma (903, 913, 923, 933, 943, 953, 963, 973) entre um primeiro bloco de croma (901, 911, 921, 931, 941, 951, 961, 971) de um primeiro bloco de imagem (601, 601’) e um segundo bloco de croma (902, 912, 922, 932, 942, 952, 962, 972) de um segundo bloco de imagem (602, 602’) de modo acurado. De modo adicional, o desblocagem deve ser eficiente e acurado.
[0349] Modalidades da implantação técnica do presente pedido
[0350] De acordo com a modalidade da presente invenção, sempre que um determinado bloco de croma (Cb ou Cr) usa ferramentas de codificação de croma em conjunto (JCCR), um parâmetro de quantização de croma Qpc é determinado com base no parâmetro de quantização de luma promediado usando-se uma regra de conversão que é diferente quando comparada ao componente de cor Cb e Cr.
[0351] De acordo com uma modalidade da presente invenção, sempre que um determinado bloco de croma (Cb ou Cr) usa ferramentas de codificação de croma em conjunto (JCCR), o QP correspondente que é usado no desblocagem de croma deve ser derivado usando a ChromaQPTable que é projetada para blocos codificados Cb-Cr em conjunto ou componente Cb-Cr em conjunto (forma concisa de blocos JCCR).
[0352] A tabela de mapeamento de QP de croma especificamente projetada para blocos JCCR cujo índice é representado por um valor de número inteiro. O valor de índice não é igual ao valor de índice Cb e Cr e podem ser valores 3, 4, 5….
[0353] Em um exemplo, conforme ilustrado na Figura 13, cada componente croma (Cb, Cr ou Cb-Cr Joint) tem sua própria tabela de mapeamento de QP de croma. Em outro exemplo, conforme ilustrado nas Figuras 12A e 12B, uma única tabela com três entradas diferentes para Cb, Cr e Cb-Cr Joint.
[0354] Em um aspecto, a presente invenção é para derivar corretamente o QP de croma que é usado quando pelo menos um dentre blocos de croma vizinhos um do outro são blocos codificados residuais Cb-Cr em conjunto (JCCR) ou o pelo menos um dentre blocos de croma é codificado usando modo residual Cb-Cr em conjunto (JCCR).
[0355] Em outro aspecto, a presente invenção é para realizar as decisões de desblocagem e/ou processo de filtragem de desblocagem que são indiretamente dependentes do valor de QP de croma que é derivado de maneira correta e, portanto, artefatos de blocagem podem ser reduzidos aperfeiçoando, por sua vez, a qualidade subjetiva geral.
[0356] A primeira modalidade do presente pedido
[0357] De acordo com um primeiro aspecto, a invenção se refere a um método de desblocagem, para desblocar uma borda de bloco de croma entre um primeiro bloco de croma de um primeiro bloco de imagem e um segundo bloco de croma de um segundo bloco de imagem, em uma codificação de imagem e/ou uma decodificação de imagem, em que o método de desblocagem compreende: - realizar um processo de decisão para a borda de bloco de croma, em que o processo de decisão compreende: no caso em que pelo menos um dentre o primeiro bloco de croma e o segundo bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR) (ou pelo menos um dentre o primeiro bloco de croma e o segundo bloco de croma usa ferramentas residuais de Cb-Cr em conjunto (JCCR) ou o pelo menos um dentre o primeiro bloco de croma e o segundo bloco de croma é codificado usando modo residual Cb-Cr em conjunto (JCCR)), determinar um parâmetro de quantização de luma promediado qPi com base em um primeiro QP de luma (tal como QpYP) de um primeiro bloco de luma do primeiro bloco de imagem e em um segundo QP de luma (tal como QpYQ) de um segundo bloco de luma do segundo bloco de imagem; e determinar um parâmetro de quantização de croma Qpc com base no parâmetro de quantização de luma promediado qPi usando-se uma tabela de mapeamento de QP de croma (tal como ChromaQPTable) cujo índice é um primeiro valor de índice ou usando-se uma tabela de mapeamento de QP de croma que compreende entradas de informações cujo índice é um primeiro valor de índice, em que o primeiro valor de índice indica o pelo menos um dentre o primeiro bloco de croma e o segundo bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR) ou o primeiro valor de índice corresponde ao caso em que o pelo menos um dentre o primeiro bloco de croma e o segundo bloco de croma usa ferramentas JCCR; - realizar um processo de filtragem para a borda de bloco de croma com base em um resultado de decisão do processo de decisão.
[0358] O resultado de decisão indica determinar se a borda de bloco (403, 504, 903) deve ser filtrada e/ou se filtragem longa deve ser realizada.
[0359] Em uma possível forma de implantação do método, de acordo com o primeiro aspecto como tal, o primeiro valor de índice corresponde a uma tabela de mapeamento de QP de croma, ou o primeiro valor de índice corresponde a entradas de informações de uma tabela de mapeamento de QP de croma.
[0360] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, em que o primeiro valor de índice é diferente do valor de um índice de componente (Cb, Cr) (cIdx), ou o primeiro valor de índice é diferente do valor de um índice de componente (Cb, Cr) (cIdx) menos 1.
[0361] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, em que o primeiro valor de índice é 2, ou o primeiro valor de índice é um valor de índice de componente (componente Cb-Cr em conjunto) (cIdx) sendo 3.
[0362] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, em que o parâmetro de quantização de croma Qpc é usado para o processo de decisão para a borda de bloco de croma, ou o parâmetro de quantização de croma Qpc é usado, de maneira direta ou indireta, para determinar se a borda de bloco de croma deve ser filtrada e/ou uma filtragem longa deve ser realizada.
[0363] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, o valor de uma primeira variável limiar (tal como β′) é determinado com base no parâmetro de quantização de croma Qpc ou em um primeiro Qpc restrito usando uma tabela de mapeamento; e o valor de uma primeira variável (tal como β) é derivado com base no valor da primeira variável limiar (tal como β′); em que o valor da primeira variável (tal como β) é usado para o processo de decisão para a borda de bloco de croma ou o valor da primeira variável (tal como β) é usado para determinar se a borda de bloco de croma deve ser filtrada e/ou se uma filtragem longa deve ser realizada.
[0364] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, o valor de uma segunda variável limiar (tal como tC′) é determinado com base no parâmetro de quantização de croma Qpc ou em um segundo Qpc restrito usando uma tabela de mapeamento; o valor de uma segunda variável (tal como tC) é derivado com base no valor da segunda variável limiar (tal como tC′); em que o valor da segunda variável (tal como t C) é usado para o processo de decisão para a borda de bloco de croma (ou o valor da segunda variável (tal como tC) é usado para determinar se a borda de bloco de croma deve ser filtrada e/ou se uma filtragem longa deve ser realizada) e o processo de filtragem para a borda de bloco de croma.
[0365] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, a tabela de mapeamento compreende o mapeamento entre uma pluralidade das primeiras variáveis limiares, uma pluralidade das segundas variáveis limiares e uma pluralidade de parâmetros de quantização.
[0366] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, o primeiro bloco de croma é um primeiro componente croma (tal como componente Cb) do primeiro bloco de imagem e o segundo bloco de croma é um primeiro componente croma (tal como componente Cb) do segundo bloco de imagem, e/ou em que o primeiro bloco de croma é um segundo componente croma
(tal como componente Cr) do primeiro bloco de imagem e o segundo bloco de croma é um segundo componente croma (tal como componente Cr) do segundo bloco de imagem.
[0367] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, pelo menos um dentre o primeiro componente croma (tal como componente Cb) do primeiro bloco de imagem e o primeiro componente croma (tal como componente Cb) do segundo bloco de imagem são os componentes Cb-Cr em conjunto ou são codificados usando modo residual Cb-Cr em conjunto (JCCR), e/ou em que pelo menos um dentre o segundo componente croma (tal como componente Cr) do primeiro bloco de imagem e o segundo componente croma (tal como componente Cr) do segundo bloco de imagem são os componentes Cb-Cr em conjunto ou são codificados usando modo residual Cb- Cr em conjunto (JCCR), ou em que pelo menos um dentre o primeiro e o segundo blocos de croma é bloco codificado residual Cb-Cr em conjunto (JCCR).
[0368] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, em que o primeiro bloco de imagem e o segundo bloco de imagem são blocos de transformada; ou o primeiro bloco de imagem e o segundo bloco de imagem são blocos de codificação.
[0369] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, em que é determinado se o pelo menos um dentre o primeiro bloco de croma e o segundo bloco de croma usa codificação Joint de ferramentas residuais de crominância (JCCR) com base em uma flag de nível de TU de unidade de transformada (tal como tu_joint_cbcr_residual_flag).
[0370] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, em que quando a flag de nível de TU (tal como tu_joint_cbcr_residual_flag) para o primeiro bloco de imagem é verdadeiro, o primeiro bloco de croma usa codificação Joint de ferramentas residuais de crominância (JCCR) (ou o primeiro bloco de croma é codificado usando modo residual Cb-Cr em conjunto (JCCR) ou o primeiro bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR) ou componente Cb-Cr Joint); ou quando a flag de nível de TU (tal como tu_joint_cbcr_residual_flag) para o segundo bloco de imagem é verdadeiro, o segundo bloco de croma usa codificação em conjunto de ferramentas residuais de crominância (JCCR) (ou o segundo bloco de croma é codificado usando modo residual Cb-Cr em conjunto (JCCR) ou o segundo bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR) ou componente Cb-Cr em conjunto).
[0371] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, em que a tabela de mapeamento de QP de croma é especificamente projetada para o bloco codificado residual Cb-Cr em conjunto (JCCR), ou a tabela de mapeamento de QP de croma é projetada para o primeiro componente croma (tal como componente Cb), o segundo componente croma (tal como componente Cr) e o componente Cb-Cr em conjunto.
[0372] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, em que a tabela de mapeamento de QP de croma (tal como ChromaQPTable) compreende a correspondência entre uma pluralidade dos parâmetros de quantização de croma Qpc e uma pluralidade dos parâmetros de quantização de luma qPi, e a pluralidade dos parâmetros de quantização de croma Qpc está associada ao primeiro valor de índice; ou a tabela de mapeamento de QP de croma (tal como ChromaQPTable) compreende: um primeiro conjunto dos parâmetros de quantização de croma QpJCCR, um segundo conjunto dos parâmetros de quantização de croma Qpcb, e um terceiro conjunto dos parâmetros de quantização de croma Qpcr, cada um dentre o primeiro conjunto, o segundo conjunto e o terceiro conjunto corresponde a uma pluralidade dos parâmetros de quantização de luma qPi, em que o primeiro conjunto dos parâmetros de quantização de croma QpJCCR está associado ao primeiro valor de índice; o segundo conjunto dos parâmetros de quantização de croma Qpcb está associado a um segundo valor de índice; e o terceiro conjunto dos parâmetros de quantização de croma Qpcr está associado a um terceiro valor de índice.
[0373] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, o primeiro valor de índice (tal como 3) indica o pelo menos um dentre o primeiro bloco de croma e o segundo bloco de croma (402, 502) é bloco codificado residual Cb-Cr em conjunto (JCCR).
[0374] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, o primeiro valor de índice ou o índice de componente Cb-Cr em conjunto (cIdx) é um valor de número inteiro, tal como 3, 4, 5,….
[0375] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, em que no caso em que o primeiro bloco de croma é um primeiro componente croma (tal como componente Cb) do primeiro bloco de imagem e o segundo bloco de croma é um primeiro componente croma (tal como componente Cb) do segundo bloco de imagem, o índice de componente de cor (cIdx) tem um segundo valor sendo 1; ou no caso em que o primeiro bloco de croma é um segundo componente croma (tal como componente Cr) do primeiro bloco de imagem e o segundo bloco de croma é um segundo componente croma (tal como componente Cr) do segundo bloco de imagem, o índice de componente de cor (cIdx) tem um terceiro valor sendo 2; ou no caso em que o primeiro bloco de croma é um primeiro componente croma (tal como componente Cb) do primeiro bloco de imagem e o segundo bloco de croma é um primeiro componente croma (tal como componente Cb) do segundo bloco de imagem, e pelo menos um dentre os primeiros componentes croma é componente residual Cb-Cr em conjunto (JCCR), o índice de componente de cor (cIdx) tem o primeiro valor sendo 3; ou no caso em que o primeiro bloco de croma é um segundo componente croma (tal como componente Cr) do primeiro bloco de imagem e o segundo bloco de croma é um segundo componente croma (tal como componente Cr) do segundo bloco de imagem, e pelo menos um dentre os segundos componentes croma é componente residual Cb-Cr em conjunto (JCCR), o índice de componente de cor (cIdx) tem o primeiro valor sendo 3; ou no caso em que pelo menos um dentre o primeiro e segundo blocos de croma é bloco codificado residual Cb-Cr em conjunto (JCCR), o índice de componente de cor (cIdx) tem o primeiro valor sendo 3.
[0376] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, em que a tabela de mapeamento de QP de croma (tal como ChromaQPTable) compreende: um primeiro conjunto dos parâmetros de quantização de croma QpJCCR, um segundo conjunto dos parâmetros de quantização de croma Qpcb, e um terceiro conjunto dos parâmetros de quantização de croma Qpcr, cada um entre o primeiro conjunto, o segundo conjunto e o terceiro conjunto corresponde a um quarto conjunto dos parâmetros de quantização de luma qPi, em que o primeiro conjunto dos parâmetros de quantização de croma QpJCCR está associado ao índice de componente de cor (cIdx) que tem o primeiro valor; o segundo conjunto dos parâmetros de quantização de croma Qpcb está associado ao índice de componente de cor (cIdx) que tem o segundo valor; e o terceiro conjunto dos parâmetros de quantização de croma Qpcr está associado ao índice de componente de cor (cIdx) que tem o terceiro valor.
[0377] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, em que a tabela de mapeamento de QP de croma (tal como ChromaQPTable) compreende a correspondência entre uma pluralidade dos parâmetros de quantização de croma Qpc e uma pluralidade dos parâmetros de quantização de luma qPi, e a pluralidade dos parâmetros de quantização de croma Qpc está associada ao primeiro valor do índice de componente (componente Cb-Cr em conjunto) (cIdx).
[0378] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, o primeiro bloco de croma (401, 501) tem um tamanho de bloco sendo M*N ou N*M, e M e N representam a largura e altura do primeiro bloco de croma, respectivamente, ou N e M representam a largura e altura do primeiro bloco de croma, respectivamente; em que o segundo bloco de croma (402, 502) tem um tamanho de bloco sendo L*T ou T*L, e L e T representam a largura e altura do segundo bloco de croma, respectivamente, ou T e L representam a largura e altura do segundo bloco de croma, respectivamente, em que N ou T é um número inteiro par 2n maior do que ou igual a um limiar (tal como 4, 8, 16, 32…) e n é um número inteiro positivo.
[0379] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, - se a borda de bloco de croma (903) for uma borda de bloco de croma horizontal (903), a direção ao longo da altura N do primeiro bloco de croma sendo perpendicular à borda de bloco de croma (903), e a direção ao longo da altura T do segundo bloco de croma sendo perpendicular à borda de bloco de croma (903), em que qualquer uma ou ambas as alturas do primeiro e segundo blocos de croma são um número inteiro par 2n maior do que 4(ou maior do que ou igual a 8); ou - se a borda de bloco de croma (903) for uma borda de bloco de croma vertical (403, 504), a direção ao longo da largura N do primeiro bloco de croma sendo perpendicular à borda de bloco (903), e a direção ao longo da largura T do segundo bloco de croma sendo perpendicular à borda de bloco (903), em que qualquer uma ou ambas as larguras do primeiro e segundo blocos de croma são um número inteiro par 2n maior do que 4(ou maior do que ou igual a 8).
[0380] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do primeiro aspecto ou o primeiro aspecto como tal, em que o segundo bloco de imagem é um bloco atual e o primeiro bloco de imagem é um bloco vizinho ao bloco atual. Solução 1: uma verificação é realizada, se um dentre bloco P ou bloco Q ou ambos os blocos P e Q usarem ferramenta residual Cb-Cr em conjunto (JCCR). Se nenhum dos blocos P e Q usar JCCR, então, o mapeamento de QP de croma é realizado do mesmo modo que é atualmente realizado para blocos Cb e Cr (consulte as equações 8-1132 e 8-1133). Mas se um dos blocos usar ferramenta JCCR, então, o valor de QP de luma médio dos dois blocos P e Q é derivado do mesmo modo que é atualmente projetado na VVC 6.0 (consulte a equação 8-1132). De modo adicional, ao mapear o QP de luma para QP de croma, de um modo exemplificativo, a tabela de mapeamento de QP de croma que é projetada para o bloco codificado residual Cb-Cr em conjunto (JCCR) ou componente Cb-Cr em conjunto é usada, de um modo alternativo, a tabela de mapeamento de QP de croma que é projetada para componente Cb-Cr em conjunto e componentes croma (Cb, Cr) pode ser usada, conforme mostrado em uma equação 8-1133’;
[0381] Portanto, uma equação 8-1132 permanece a mesma, mas a equação 8-1133’, que é diferente da equação 8-1133, é ilustrada da seguinte maneira: qPi = Clip3( 0, 63, ( ( QpQ + QpP + 1 ) >> 1 ) + cQpPicOffset ) (8-1132) QpC = ChromaQpTable[2 ][ qPi ] (8-1133’)
[0382] As mudanças no texto de especificação para a solução 1 são fornecidas em relação à seção 8.8.3.6.3 do documento JVET-O2001 (versão – vE), conforme a seguir.
[0383] 8.8.3.6.3 Processo de decisão para bordas de bloco de croma
[0384] As variáveis QpQ e QpP são definidas como iguais aos valores de QpY das unidades de codificação que incluem os blocos de codificação contendo a amostra q0,0 e p0,0, respectivamente.
[0385] A variável QpC é derivada da seguinte maneira: qPi = Clip3( 0, 63, ( ( QpQ + QpP + 1 ) >> 1 ) + cQpPicOffset ) (8-1132) - se a amostra p0,0 ou q0,0 estiver em uma unidade de transformada com tu_joint_cbcr_residual_flag igual a 1, então, - QpC = ChromaQpTable[ 2 ][ qPi ] (8-1133 - De outro modo - QpC = ChromaQpTable[ cIdx − 1 ][ qPi ] (8-1133)
[0386] Pode-se observar que: cIdx =0 se os blocos contendo a amostra q 0,0 e p0,0 forem blocos de luma ou componentes luma, cIdx =1 se os blocos contendo a amostra q 0,0 e p0,0 forem primeiros componentes croma (Cb), cIdx =2 se os blocos contendo a amostra q0,0 e p0,0 forem segundos componentes croma (Cr), e cIdx =3 se um ou ambos os blocos contendo a amostra q 0,0 e p0,0 forem blocos codificados residual Cb-Cr em conjunto (JCCR) ou componentes Cb-Cr em conjunto.
[0387] A etapa de determinar se um dentre bloco P ou bloco Q ou ambos os blocos P e Q usam ferramenta residual Cb-Cr em conjunto (JCCR) pode incluir: se a amostra p0,0 estiver em uma unidade de transformada com tu_joint_cbcr_residual_flag igual a 1, então, determina-se que bloco P usa ferramenta residual Cb-Cr em conjunto (JCCR); e/ou se a amostra q0,0 estiver em uma unidade de transformada com tu_joint_cbcr_residual_flag igual a 1, então, determina-se que bloco Q usa ferramenta residual Cb-Cr em conjunto (JCCR).
[0388] Os efeitos benéficos e vantagens da solução 1, de acordo com uma modalidade da presente invenção, incluem que a indexação de tabela de mapeamento de ChromaQPTable é modificada com base na verificação de que o bloco atual usa JCCR ou não sem mudanças significativas no mapeamento de conversão.
[0389] A segunda modalidade do presente pedido
[0390] De acordo com um segundo aspecto, a invenção se refere a um método de desblocagem, para desblocar uma borda de bloco de croma 903, 913, 923 entre um primeiro bloco de croma 901, 911, 921 de um primeiro bloco de imagem 601, 601’ e um segundo bloco de croma 902, 912, 922 de um segundo bloco de imagem 602, 602’, em uma codificação de imagem e/ou uma decodificação de imagem, em que o método de desblocagem compreende: - realizar um processo de decisão para a borda de bloco de croma, em que o processo de decisão compreende: ▪ determinar um parâmetro de quantização de croma QpCp para o primeiro bloco de croma 901, 911, 921 com base em um primeiro QP de luma (tal como QpYP) de um primeiro bloco de luma 801, 802 do primeiro bloco de imagem 901, 911, 921 usando-se uma tabela de mapeamento de QP de croma (tal como ChromaQpTable[ 0 ], ChromaQpTable[ 1 ], ChromaQpTable[ 2 ] da tabela 1200, 1200’, 1301, 1302, 1303) ou entradas de informações da tabela de mapeamento de QP de croma que é indicada por um índice (tal como índice de componente, cIdx ou índice de linha), e o índice tem um primeiro valor de índice (tal como 3) quando o primeiro bloco de croma é bloco codificado residual Cb-Cr em conjunto (JCCR), ou o índice (cIdx) tem um segundo valor de índice (tal como 1 ou 2) quando o primeiro bloco de croma é o componente croma do primeiro bloco de imagem; ▪ determinar um parâmetro de quantização de croma QpCq para o segundo bloco de croma 902, 912, 922 com base em um segundo QP de luma (tal como QpYQ) de um segundo bloco de luma (401, 501) do segundo bloco de imagem usando-se uma tabela de mapeamento de QP de croma (tal como ChromaQPTable) ou entradas de informações da tabela de mapeamento de QP de croma que é indicada por um índice (tal como índice de componente, cIdx), e o índice (cIdx) tem um primeiro valor (tal como 3) quando o segundo bloco de croma é bloco codificado residual Cb-Cr em conjunto (JCCR), ou o índice (cIdx) tem um segundo valor (tal como 1 ou 2) quando o segundo bloco de croma é o componente croma do segundo bloco de imagem; e ▪ determinar um parâmetro de quantização de croma promediado e arredondado QpC com base no parâmetro de quantização de croma QpCp para o primeiro bloco de croma e no parâmetro de quantização de croma QpCq para o segundo bloco de croma; - realizar um processo de filtragem para a borda de bloco de croma com base em um resultado de decisão do processo de decisão.
[0391] Pode-se entender que o resultado de decisão indica se a borda de bloco deve ser filtrada ou não, e/ou se uma filtragem longa deve ser realizada ou não.
[0392] Em uma possível forma de implantação do método, de acordo com o segundo aspecto como tal, em que diferentes valores de índice correspondem a diferentes entradas de informações de uma tabela de mapeamento de QP de croma, ou diferentes valores de índice correspondem a diferentes tabelas de mapeamento de QP de croma.
[0393] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do segundo aspecto ou o segundo aspecto como tal, em que a etapa de determinar um parâmetro de quantização de croma promediado e arredondado QpC com base no parâmetro de quantização de croma QpCp para o primeiro bloco de croma e no parâmetro de quantização de croma QpCq para o segundo bloco de croma, compreende: determinar um parâmetro de quantização QpCb de primeiro componente croma promediado (tal como componente Cb) com base - no parâmetro de quantização QpCbp de primeiro componente croma (tal como componente Cb) para o primeiro componente croma (tal como componente Cb) do primeiro bloco de imagem e - no parâmetro de quantização QpCbq de primeiro componente croma (tal como componente Cb) para o primeiro componente croma (tal como componente Cb) do segundo bloco de imagem.
[0394] Em uma possível forma de implementação do método, de acordo com qualquer implementação precedente do segundo aspecto ou o segundo aspecto como tal, em que a etapa de determinar um parâmetro de quantização de croma promediado e arredondado QpC com base no parâmetro de quantização de croma QpCp para o primeiro bloco de croma e no parâmetro de quantização de croma QpCq para o segundo bloco de croma, compreende: determinar um parâmetro de quantização QpCr de segundo componente croma (tal como componente Cr) promediado com base - no parâmetro de quantização QpCrp de segundo componente croma (tal como componente Cr) para o segundo componente croma (tal como componente Cr) do primeiro bloco de imagem e - no parâmetro de quantização QpCrq de segundo componente croma (tal como componente Cr) para o segundo componente croma (tal como componente Cr) do segundo bloco de imagem.
[0395] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do segundo aspecto ou o segundo aspecto como tal, em que o parâmetro de quantização de croma promediado e arredondado Qpc é usado para o processo de decisão para a borda de bloco de croma, ou o parâmetro de quantização de croma promediado e arredondado Qpc é usado, de maneira direta ou indireta, para determinar se a borda de bloco de croma deve ser filtrada e/ou se uma filtragem longa deve ser realizada.
[0396] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do segundo aspecto ou o segundo aspecto como tal, em que o valor de uma primeira variável limiar (tal como β′) é determinado com base no parâmetro de quantização de croma promediado e arredondado Qpc ou em um primeiro Qpc restrito usando uma tabela de mapeamento; e o valor de uma primeira variável (tal como β) é derivado com base no valor da primeira variável limiar (tal como β′); em que o valor da primeira variável (tal como β) é usado para o processo de decisão para a borda de bloco de croma ou é usado para determinar se a borda de bloco deve ser filtrada e/ou se uma filtragem longa deve ser realizada.
[0397] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do segundo aspecto ou o segundo aspecto como tal, em que o valor de uma segunda variável limiar (tal como tC′) é determinado com base no parâmetro de quantização de croma promediado e arredondado Qpc ou em um segundo Qpc restrito usando uma tabela de mapeamento; o valor de uma segunda variável (tal como tC) é derivado com base no valor da segunda variável limiar (tal como tC′); em que o valor da segunda variável (tal como t C) é usado para o processo de decisão para a borda de bloco de croma (ou determinar se a borda de bloco deve ser filtrada e/ou se uma filtragem longa deve ser realizada) e o processo de filtragem para a borda de bloco de croma.
[0398] Em uma possível forma de implantação do método de acordo com qualquer implantação precedente do segundo aspecto ou o segundo aspecto como tal, em que a tabela de mapeamento compreende o mapeamento entre uma pluralidade das primeiras variáveis limiares, uma pluralidade das segundas variáveis limiares, e uma pluralidade de parâmetros de quantização.
[0399] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do segundo aspecto ou o segundo aspecto como tal, em que o primeiro bloco de croma é um primeiro componente croma (tal como componente Cb) do primeiro bloco de imagem e o segundo bloco de croma é um primeiro componente croma (tal como componente Cb) do segundo bloco de imagem, ou em que o primeiro bloco de croma é um segundo componente croma (tal como componente Cr) do primeiro bloco de imagem e o segundo bloco de croma é um segundo componente croma (tal como componente Cr) do segundo bloco de imagem.
[0400] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do segundo aspecto ou o segundo aspecto como tal, em que o primeiro bloco de imagem e o segundo bloco de imagem são unidades de transformada ou blocos de transformada.
[0401] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do segundo aspecto ou o segundo aspecto como tal, em que é determinado se o pelo menos um dentre o primeiro bloco de croma e o segundo bloco de croma (402, 502) é codificado usando modo residual Cb-Cr em conjunto (JCCR) ou o pelo menos um dentre o primeiro bloco de croma e o segundo bloco de croma (402, 502) sendo um bloco codificado residual Cb-Cr em conjunto (JCCR) com base em uma flag de nível de TU de unidade de transformada (tal como tu_joint_cbcr_residual_flag).
[0402] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do segundo aspecto ou o segundo aspecto como tal, em que, quando a flag de nível de TU (tal como tu_joint_cbcr_residual_flag) para o primeiro bloco de imagem é verdadeiro, o primeiro bloco de croma usa codificação em conjunto de ferramentas residuais de crominância (JCCR) ou o primeiro bloco de croma é codificado usando modo residual Cb-Cr em conjunto (JCCR); ou quando a flag de nível de TU (tal como tu_joint_cbcr_residual_flag) para o segundo bloco de imagem é verdadeiro, o segundo bloco de croma usa codificação em conjunto de ferramentas residuais de crominância (JCCR) ou o segundo bloco de croma é codificado usando modo residual Cb-Cr em conjunto (JCCR).
[0403] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do segundo aspecto ou o segundo aspecto como tal, em que a tabela de mapeamento de QP de croma (tal como ChromaQPTable) compreende a correspondência entre uma pluralidade dos parâmetros de quantização de croma Qpc e uma pluralidade dos parâmetros de quantização de luma Qpluma, e a pluralidade dos parâmetros de quantização de croma Qpc está associada ao primeiro valor de índice ou ao segundo valor de índice.
[0404] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do segundo aspecto ou o segundo aspecto como tal, o primeiro bloco de croma tem um tamanho de bloco sendo M*N ou N*M, e M e N representam a largura e altura do primeiro bloco de croma respectivamente, ou N e M representam a largura e altura do primeiro bloco de croma respectivamente; em que o segundo bloco de croma tem um tamanho de bloco de L*T ou T*L, e L e T representam a largura e altura do segundo bloco de croma respectivamente, ou T e L representam a largura e altura do segundo bloco de croma respectivamente, em que N ou T é um número inteiro par 2 n maior do que ou igual a um limiar (tal como 4, 8, 16, 32…) e n é um número inteiro positivo.
[0405] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do segundo aspecto ou o segundo aspecto como tal, - se a borda de bloco de croma for uma borda de bloco de croma horizontal, a direção ao longo da altura N do primeiro bloco de croma sendo perpendicular à borda de bloco de croma, e a direção ao longo da altura T do segundo bloco de croma sendo perpendicular à borda de bloco de croma, em que qualquer uma ou ambas as alturas do primeiro e segundo blocos de croma são um número inteiro par 2n maior do que 4(ou maior do que ou igual a 8) ou - se a borda de bloco de croma for uma borda de bloco de croma vertical, a direção ao longo da largura N do primeiro bloco de croma sendo perpendicular à borda de bloco, e a direção ao longo da largura T do segundo bloco de croma sendo perpendicular à borda de bloco, em que qualquer uma ou ambas as larguras do primeiro e segundo blocos de croma são um número inteiro par 2n maior do que 4 (ou maior do que ou igual a 8).
[0406] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do segundo aspecto ou o segundo aspecto como tal, em que o segundo bloco de imagem é um bloco atual e o primeiro bloco de imagem é um bloco vizinho ao bloco atual. Solução 2:
[0407] Com base na flag JCCR, o QP de luma é mapeado para o QP de croma para cada um dentre os blocos P e Q separadamente usando-se respectivas tabelas de mapeamento de QP de croma e, então, a média dos valores de QP de croma é definida como o valor de QP final que é usado para desblocagem.
[0408] Se bloco Q usar ferramenta residual Cb-Cr em conjunto (JCCR), então, QpcQ = ChromaQpTable[2 ][ QpQ + cQpPicOffset], de outro modo, QpcQ = ChromaQpTable[cIdx -1 ][ QpQ + cQpPicOffset]
[0409] Se bloco P usar JCCR, então, Qpcp = ChromaQpTable[2 ][ Qpp + cQpPicOffset], de outro modo, Qpcp = ChromaQpTable[cIdx -1 ][ Qpp + cQpPicOffset] QpC = Clip3( 0, 63, ( ( QpcQ + QpcP + 1) >> 1 ) ) (8-1132’)
[0410] Pode-se entender que ChromaQpTable[2] representa a tabela de mapeamento de QP de croma para um bloco codificado residual Cb-Cr em conjunto (JCCR).
[0411] A etapa de determinar se um dentre bloco P ou bloco Q ou ambos os blocos P e Q usam ferramenta JCCR pode incluir: se a amostra p0,0 estiver em uma unidade de transformada com tu_joint_cbcr_residual_flag igual a 1, então, determina-se que bloco P usa ferramenta JCCR; e/ou se a amostra q0,0 estiver em uma unidade de transformada com tu_joint_cbcr_residual_flag igual a 1, então, determina-se que bloco Q usa ferramenta JCCR.
[0412] As mudanças no texto de especificação para a solução 2 são fornecidas em relação à seção 8.8.3.6.3 do documento JVET-O2001 (versão – vE).
[0413] 8.8.3.6.3 Processo de decisão para bordas de bloco de croma
[0414] As variáveis QpQ e QpP são definidas como iguais aos valores QpY das unidades de codificação que incluem os blocos de codificação contendo a amostra q0,0 e p0,0, respectivamente.
[0415] A variável QpC é derivada da seguinte maneira: – Se a amostra p0,0 ou q0,0 estiver em uma unidade de transformada com tu_joint_cbcr_residual_flag igual a 1, então, o Se a amostra p0,0 estiver em uma unidade de transformada com tu_joint_cbcr_residual_flag igual a 1, então
▪ QpCp = ChromaQpTable[ 2 ][ QpP + cQpPicOffset ] o De outro modo ▪ QpCp = ChromaQpTable[ cIdx − 1 ][ QpP + cQpPicOffset ] o Se a amostra q0,0 estiver em uma unidade de transformada com tu_joint_cbcr_residual_flag igual a 1, então ▪ QpCq = ChromaQpTable[ 2 ][ Qpq + cQpPicOffset ] o De outro modo ▪ QpCq = ChromaQpTable[ cIdx − 1 ][ Qpq + cQpPicOffset ] QpC = Clip3( 0, 63, ( ( QpCp + QpCq + 1 ) >> 1 ) ) (8-1132) – De outro modo qPi = Clip3( 0, 63, ( ( QpQ + QpP + 1 ) >> 1 ) + cQpPicOffset ) (8-1132) QpC = ChromaQpTable[ cIdx − 1 ][ qPi ] (8-1133)
[0416] Pode-se entender que a variável QpQ representa o valor QpY para um bloco de luma correspondente Q, e a variável QpP representa o valor QpY para um bloco de luma correspondente P.
[0417] Os efeitos benéficos e vantagens da solução 2, de acordo com uma modalidade da presente invenção, são que o QP derivado final para os blocos JCCR é mais acurado quando comparado à solução 1 e, portanto, pode resultar em melhores decisões de desblocagem resultando, desse modo, em melhor qualidade subjetiva.
[0418] A terceira modalidade do presente pedido
[0419] De acordo com um terceiro aspecto, a invenção se refere a um método de desblocagem, para desblocar uma borda de bloco de croma entre um primeiro bloco de croma de um primeiro bloco de imagem e um segundo bloco de croma de um segundo bloco de imagem, em uma codificação de imagem e/ou uma decodificação de imagem, em que o método de desblocagem compreende: - realizar um processo de decisão para a borda de bloco de croma, em que o processo de decisão compreende: ▪ determinar um parâmetro de quantização de croma QpCp para o primeiro bloco de croma com base em um primeiro QP de luma (tal como QpYP) de um primeiro bloco de luma (801, 802) do primeiro bloco de imagem usando- se uma tabela de mapeamento de QP de croma (tal como ChromaQPTable) ou entradas de informações da tabela de mapeamento de QP de croma que é indicada por um índice (tal como índice de componente, cIdx ou índice de linha), e o índice (cIdx) tem um primeiro valor de índice (tal como 3) quando o primeiro bloco de croma é bloco codificado residual Cb-Cr em conjunto (JCCR), ou o índice (cIdx) tem um segundo valor de índice (tal como 1 ou 2) quando o primeiro bloco de croma é o componente croma do primeiro bloco de imagem; ▪ determinar um parâmetro de quantização de croma QpCq para o segundo bloco de croma com base em um segundo QP de luma (tal como QpYQ) de um segundo bloco de luma (802, 801) do segundo bloco de imagem usando- se uma tabela de mapeamento de QP de croma (tal como ChromaQPTable) ou entradas de informações da tabela de mapeamento de QP de croma que é indicada por um índice (tal como índice de componente, cIdx), e o índice (cIdx) tem um primeiro valor (tal como 3) quando o segundo bloco de croma é bloco codificado residual Cb-Cr em conjunto (JCCR), ou o índice (cIdx) tem um segundo valor (tal como 1 ou 2) quando o segundo bloco de croma é o componente croma do segundo bloco de imagem; e ▪ determinar um parâmetro de quantização de croma promediado e arredondado QpC com base no parâmetro de quantização de croma QpCp para o primeiro bloco de croma e no parâmetro de quantização de croma QpCq para o segundo bloco de croma; - realizar um processo de filtragem para a borda de bloco de croma com base em um resultado de decisão do processo de decisão.
[0420] Pode-se entender que o resultado de decisão indica se a borda de bloco deve ser filtrada ou não, e/ou se uma filtragem longa deve ser realizada ou não.
[0421] Em uma possível forma de implantação do método, de acordo com o terceiro aspecto como tal, diferentes valores de índice correspondem a diferentes entradas de informações de uma tabela de mapeamento de QP de croma, ou diferentes valores de índice correspondem a diferentes tabelas de mapeamento de QP de croma.
[0422] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do terceiro aspecto ou o terceiro aspecto como tal, quando no caso em que o primeiro bloco de croma é codificado usando modo JCCR, e o modo JCCR é um primeiro modo JCCR (tal como 1),
determinar um parâmetro de quantização QpCbp de primeiro componente croma (tal como componente Cb) para o primeiro componente croma (tal como componente Cb) do primeiro bloco de imagem com base em um primeiro QP de luma (tal como QpYP) de um primeiro bloco de luma do primeiro bloco de imagem usando-se uma tabela de mapeamento de QP de croma cujo índice (tal como índice de componente, cIdx) é o primeiro valor de índice ou usando-se uma tabela de mapeamento de QP de croma que compreende entradas de informações cujo índice (tal como índice de componente, cIdx) é o primeiro valor de índice; e determinar um parâmetro de quantização QpCrp de segundo componente croma (tal como componente Cr) para o segundo componente croma (tal como componente Cr) do primeiro bloco de imagem com base no parâmetro de quantização QpCbp de primeiro componente croma (tal como componente Cb).
[0423] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do terceiro aspecto ou o terceiro aspecto como tal, quando no caso em que o segundo bloco de croma é codificado usando modo JCCR, e o modo JCCR é um primeiro modo JCCR (tal como 1), determinar um parâmetro de quantização QpCbq de primeiro componente croma (tal como componente Cb) para o primeiro componente croma (tal como componente Cb) do segundo bloco de imagem com base em um segundo QP de luma (tal como QpYQ) de um segundo bloco de luma do segundo bloco de imagem usando-se uma tabela de mapeamento de QP de croma cujo índice (tal como índice de componente, cIdx) é o primeiro valor de índice ou usando-se uma tabela de mapeamento de QP de croma que compreende entradas de informações cujo índice (tal como índice de componente, cIdx) é o primeiro valor de índice; e determinar um parâmetro de quantização QpCrq de segundo componente croma (tal como componente Cr) para o segundo componente croma (tal como componente Cr) do segundo bloco de imagem com base no parâmetro de quantização QpCbq de primeiro componente croma (tal como componente Cb).
[0424] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do terceiro aspecto ou o terceiro aspecto como tal, em que, quando no caso em que o primeiro bloco de croma é codificado usando modo JCCR, e o modo JCCR é um segundo modo JCCR (tal como 2), determinar um parâmetro de quantização QpCbp de primeiro componente croma (tal como componente Cb) para o primeiro componente croma (tal como componente Cb) do primeiro bloco de imagem com base em um primeiro QP de luma (tal como QpYP) de um primeiro bloco de luma do primeiro bloco de imagem usando-se uma tabela de mapeamento de QP de croma cujo índice (tal como índice de componente, cIdx) é o primeiro valor de índice ou usando-se uma tabela de mapeamento de QP de croma que compreende entradas de informações cujo índice (tal como índice de componente, cIdx) é o primeiro valor de índice; e definir um parâmetro de quantização QpCrp de segundo componente croma (tal como componente Cr) para o segundo componente croma (tal como componente Cr) do primeiro bloco de imagem como o parâmetro de quantização QpCbp de primeiro componente croma (tal como componente Cb).
[0425] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do terceiro aspecto ou o terceiro aspecto como tal, em que quando no caso em que o segundo bloco de croma é codificado usando modo JCCR, e o modo JCCR é um segundo modo JCCR (tal como 2), determinar um parâmetro de quantização QpCbq de primeiro componente croma (tal como componente Cb) para o primeiro componente croma (tal como componente Cb) do segundo bloco de imagem com base em um segundo QP de luma (tal como QpYQ) de um segundo bloco de luma do segundo bloco de imagem usando-se uma tabela de mapeamento de QP de croma cujo índice (tal como índice de componente, cIdx) é o primeiro valor de índice ou usando-se uma tabela de mapeamento de QP de croma que compreende entradas de informações cujo índice (tal como índice de componente, cIdx) é o primeiro valor de índice; e definir um parâmetro de quantização QpCrq de segundo componente croma (tal como componente Cr) para o segundo componente croma (tal como componente Cr) do segundo bloco de imagem como o parâmetro de quantização QpCbq de primeiro componente croma (tal como componente Cb).
[0426] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do terceiro aspecto ou o terceiro aspecto como tal, quando no caso em que o primeiro bloco de croma é codificado usando modo JCCR, e o modo JCCR é um terceiro modo JCCR (tal como 3), determinar um parâmetro de quantização QpCrp de segundo componente croma (tal como componente Cr) para o segundo componente croma (tal como componente Cr) do primeiro bloco de imagem com base em um primeiro QP de luma (tal como QpYP) de um primeiro bloco de luma do primeiro bloco de imagem usando-se uma tabela de mapeamento de QP de croma cujo índice (tal como índice de componente, cIdx) é o primeiro valor de índice ou usando-se uma tabela de mapeamento de QP de croma que compreende entradas de informações cujo índice (tal como índice de componente, cIdx) é o primeiro valor de índice; e determinar um parâmetro de quantização QpCbp de primeiro componente croma (tal como componente Cb) para o primeiro componente croma (tal como componente Cb) do primeiro bloco de imagem com base no parâmetro de quantização QpCrp de segundo componente croma (tal como componente Cr).
[0427] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do terceiro aspecto ou o terceiro aspecto como tal, em que quando no caso em que o segundo bloco de croma é codificado usando modo JCCR, e o modo JCCR é um terceiro modo JCCR (tal como 3), determinar um parâmetro de quantização QpCrq de segundo componente croma (tal como componente Cr) para o segundo componente croma (tal como componente Cr) do segundo bloco de imagem com base em um segundo QP de luma (tal como QpYQ) de um segundo bloco de luma do segundo bloco de imagem usando-se uma tabela de mapeamento de QP de croma cujo índice (tal como índice de componente, cIdx) é o primeiro valor de índice ou usando-se uma tabela de mapeamento de QP de croma que compreende entradas de informações cujo índice (tal como índice de componente, cIdx) é o primeiro valor de índice; e determinar um parâmetro de quantização QpCbq de primeiro componente croma (tal como componente Cb) para o primeiro componente croma (tal como componente Cb) do segundo bloco de imagem com base no parâmetro de quantização QpCrq de segundo componente croma (tal como componente Cr).
[0428] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do terceiro aspecto ou o terceiro aspecto como tal, em que a etapa de determinar um parâmetro de quantização de croma promediado e arredondado QpC com base no parâmetro de quantização de croma QpCp para o primeiro bloco de croma e no parâmetro de quantização de croma QpCq para o segundo bloco de croma, compreende: determinar um parâmetro de quantização QpCb de primeiro componente croma promediado (tal como componente Cb) com base - no parâmetro de quantização QpCbp de primeiro componente croma (tal como componente Cb) para o primeiro componente croma (tal como componente Cb) do primeiro bloco de imagem e - no parâmetro de quantização QpCbq de primeiro componente croma (tal como componente Cb) para o primeiro componente croma (tal como componente Cb) do segundo bloco de imagem.
[0429] Em uma possível forma de implementação do método, de acordo com qualquer implementação precedente do terceiro aspecto ou o terceiro aspecto como tal, em que a etapa de determinar um parâmetro de quantização de croma promediado e arredondado QpC com base no parâmetro de quantização de croma QpCp para o primeiro bloco de croma e no parâmetro de quantização de croma QpCq para o segundo bloco de croma, compreende: determinar um parâmetro de quantização QpCr de segundo componente croma (tal como componente Cr) promediado com base - no parâmetro de quantização QpCrp de segundo componente croma (tal como componente Cr) para o segundo componente croma (tal como componente Cr) do primeiro bloco de imagem e - no parâmetro de quantização QpCrq de segundo componente croma (tal como componente Cr) para o segundo componente croma (tal como componente Cr) do segundo bloco de imagem.
[0430] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do terceiro aspecto ou o terceiro aspecto como tal, o parâmetro de quantização de croma promediado e arredondado Qpc é usado para o processo de decisão para a borda de bloco de croma, ou o parâmetro de quantização de croma promediado e arredondado Qpc é usado, de maneira direta ou indireta, para determinar se a borda de bloco de croma deve ser filtrada e/ou se uma filtragem longa deve ser realizada.
[0431] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do terceiro aspecto ou o terceiro aspecto como tal, o valor de uma primeira variável limiar (tal como β′) é determinado com base no parâmetro de quantização de croma promediado e arredondado Qpc ou um primeiro Qpc restrito usando uma tabela de mapeamento; e o valor de uma primeira variável (tal como β) é derivado com base no valor da primeira variável limiar (tal como β′); em que o valor da primeira variável (tal como β) é usado para o processo de decisão para a borda de bloco de croma ou é usado para determinar se a borda de bloco deve ser filtrada e/ou se uma filtragem longa deve ser realizada.
[0432] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do terceiro aspecto ou o terceiro aspecto como tal, o valor de uma segunda variável limiar (tal como tC′) é determinado com base no parâmetro de quantização de croma promediado e arredondado Qpc ou em um segundo Qpc restrito usando uma tabela de mapeamento; o valor de uma segunda variável (tal como tC) é derivado com base no valor da segunda variável limiar (tal como tC′); em que o valor da segunda variável (tal como t C) é usado para o processo de decisão para a borda de bloco de croma (ou determinar se a borda de bloco deve ser filtrada e/ou se uma filtragem longa deve ser realizada) e o processo de filtragem para a borda de bloco de croma.
[0433] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do terceiro aspecto ou o terceiro aspecto como tal, em que a tabela de mapeamento compreende o mapeamento entre uma pluralidade das primeiras variáveis limiares, uma pluralidade das segundas variáveis limiares e uma pluralidade de parâmetros de quantização.
[0434] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do terceiro aspecto ou o terceiro aspecto como tal, em que o primeiro bloco de croma é um primeiro componente croma (tal como componente Cb) do primeiro bloco de imagem e o segundo bloco de croma é um primeiro componente croma (tal como componente Cb) do segundo bloco de imagem, ou em que o primeiro bloco de croma é um segundo componente croma (tal como componente Cr) do primeiro bloco de imagem e o segundo bloco de croma é um segundo componente croma (tal como componente Cr) do segundo bloco de imagem.
[0435] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do terceiro aspecto ou o terceiro aspecto como tal, o primeiro bloco de imagem e o segundo bloco de imagem são unidades de transformada ou blocos de transformada.
[0436] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do terceiro aspecto ou o terceiro aspecto como tal, em que é determinado se o pelo menos um dentre o primeiro bloco de croma e o segundo bloco de croma (402, 502) é codificado usando modo residual Cb-Cr em conjunto (JCCR) ou o pelo menos um dentre o primeiro bloco de croma e o segundo bloco de croma (402, 502) sendo um bloco codificado residual Cb- Cr em conjunto (JCCR) com base em uma flag de nível de TU de unidade de transformada (tal como tu_joint_cbcr_residual_flag).
[0437] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do terceiro aspecto ou o terceiro aspecto como tal, em que, quando a flag de nível de TU (tal como tu_joint_cbcr_residual_flag) para o primeiro bloco de imagem é verdadeiro, o primeiro bloco de croma usa codificação em conjunto de ferramentas residuais de crominância (JCCR) ou o primeiro bloco de croma é codificado usando modo residual Cb-Cr em conjunto (JCCR); ou quando a flag de nível de TU (tal como tu_joint_cbcr_residual_flag) para o segundo bloco de imagem é verdadeiro, o segundo bloco de croma usa codificação em conjunto de ferramentas residuais de crominância (JCCR) ou o segundo bloco de croma é codificado usando modo residual Cb-Cr em conjunto (JCCR).
[0438] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do terceiro aspecto ou o terceiro aspecto como tal, em que a tabela de mapeamento de QP de croma (tal como ChromaQPTable) compreende a correspondência entre uma pluralidade dos parâmetros de quantização de croma Qpc e uma pluralidade dos parâmetros de quantização de luma Qpluma, e a pluralidade dos parâmetros de quantização de croma Qpc está associada ao primeiro valor de índice ou ao segundo valor de índice.
[0439] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do terceiro aspecto ou o terceiro aspecto como tal, em que o primeiro bloco de croma tem um tamanho de bloco sendo M*N ou N*M, e M e N representam a largura e altura do primeiro bloco de croma respectivamente, ou N e M representam a largura e altura do primeiro bloco de croma respectivamente; em que o segundo bloco de croma tem um tamanho de bloco de L*T ou T*L, e L e T representam a largura e altura do segundo bloco de croma respectivamente, ou T e L representam a largura e altura do segundo bloco de croma respectivamente, em que N ou T é um número inteiro par 2n maior do que ou igual a um limiar (tal como 4, 8, 16, 32…) e n é um número inteiro positivo.
[0440] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do terceiro aspecto ou o terceiro aspecto como tal, - se a borda de bloco de croma for uma borda de bloco de croma horizontal, a direção ao longo da altura N do primeiro bloco de croma sendo perpendicular à borda de bloco de croma, e a direção ao longo da altura T do segundo bloco de croma sendo perpendicular à borda de bloco de croma, em que qualquer uma ou ambas as alturas do primeiro e segundo blocos de croma são um número inteiro par 2n maior do que 4(ou maior do que ou igual a 8) ou - se a borda de bloco de croma for uma borda de bloco de croma vertical, a direção ao longo da largura N do primeiro bloco de croma sendo perpendicular à borda de bloco, e a direção ao longo da largura T do segundo bloco de croma sendo perpendicular à borda de bloco, em que qualquer uma ou ambas as larguras do primeiro e segundo blocos de croma são um número inteiro par 2n maior do que 4 (ou maior do que ou igual a 8).
[0441] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do terceiro aspecto ou o terceiro aspecto como tal, o segundo bloco de imagem é um bloco atual e o primeiro bloco de imagem é um bloco vizinho ao bloco atual. Solução 3:
[0442] valor de QP de croma de entrada são dependentes do modo JCCR.
[0443] Com base no modo de JCCR, os valores de QP de croma de entrada são determinados.  Se modo JCCR == 1, então, QpCb = ChromaQpTable[ 2 ][ Qpx ] E QpCr = (QpCb + 1) >> 1  Se modo JCCR == 2, então, QpCb = ChromaQpTable[ 2 ][ Qpx ] E QpCr = QpCb  Se modo JCCR == 3, então, QpCr = ChromaQpTable[ 2 ][ Qpx ] E QpCb = (QpCr + 1) >> 1 * x em Qpx pode ser o valor de QP de bloco P ou Q. QpCr = Clip3( 0, 63, ( ( QpcrQ + QpcrP + 1) >> 1 ) ) (8-1132a) QpCb = Clip3( 0, 63, ( ( QpcbQ + QpcbP + 1) >> 1 ) ) (8-1132b)
[0444] Com base no TuCResMode, a derivação dos valores de QP de croma de entrada para cada um dentre os blocos P e Q é determinada. Se TuCResMode == 1, então, a variável QPcb é derivada como QPcb = ChromaQpTable[ 2 ][ QPx ] e o valor de QPCr é derivado como QPCr = (QpCb + 1) >> 1 else se TuCResMode == 2, então, a variável QPcb é derivada como QPcb = ChromaQpTable[ 2 ][ QPx ] e o valor de QPCr é derivado como QPCr = QpCb else se TuCResMode == 3, então, a variável QPcr é derivada como QPcr = ChromaQpTable[ 2 ][ QPx ] e o valor de QPCr é derivado como QPCb = (QpCr + 1) >> 1 Observa-se que x em QPx pode ser substituído por P ou Q para os respectivos blocos.
[0445] Os valores QPcr e QPcb podem ser, então, derivados da seguinte maneira: QpCr = Clip3( 0, 63, ( ( QpcrQ + QpcrP + 1) >> 1 ) ) (8-1132a) QpCb = Clip3( 0, 63, ( ( QpcbQ + QpcbP + 1) >> 1 ) ) (8-1132b)
[0446] Os efeitos benéficos e vantagens da solução 3, de acordo com uma modalidade da presente invenção, são que o valor de QP usado por um bloco de croma (Cb ou Cr) também é ajustado com base no modo JCCR (TuCResMode) e, portanto, QP mais acurado pode ser derivado para cada um dentre o componente Cb e Cr quando JCCR é usado para sinalizar, em conjunto, os componentes Cb-Cr.
[0447] A quarta modalidade do presente pedido
[0448] De acordo com um quarto aspecto, a invenção se refere a um método de desblocagem, para desblocar uma borda de bloco de croma (903, 913, 923) entre um primeiro bloco de croma (901, 911, 921, 931, 941, 951, 961, 971) de um primeiro bloco de imagem (601, 601’) e um segundo bloco de croma (902, 912, 922, 932, 942, 952, 962, 972) de um segundo bloco de imagem (602, 602’), em uma codificação de imagem e/ou uma decodificação de imagem, em que o método de desblocagem compreende: - realizar um processo de decisão para a borda de bloco de croma, em que o processo de decisão compreende: - determinar um parâmetro de quantização de croma QpCp para o primeiro bloco de croma (901, 911, 921, 931, 941, 951, 961, 971) com base em um primeiro QP de luma (tal como QpYP) para um primeiro bloco de luma (801) do primeiro bloco de imagem (601, 601’) e em uma regra de conversão, em que a regra de conversão é uma primeira regra de conversão quando o primeiro bloco de croma (901, 911, 921, 931, 941, 951, 961, 971) é um bloco codificado residual Cb-Cr em conjunto (JCCR), ou a regra de conversão é uma segunda regra de conversão quando o primeiro bloco de croma (901, 911, 921, 931, 941, 951, 961, 971) é o componente croma do primeiro bloco de imagem (601, 601’); - determinar um parâmetro de quantização de croma QpCq para o segundo bloco de croma (902, 912, 922, 932, 942, 952, 962, 972) com base em um segundo QP de luma (tal como QpYQ) de um segundo bloco de luma (802) do segundo bloco de imagem (602, 602’) e em uma regra de conversão, em que a regra de conversão é uma primeira regra de conversão quando o segundo bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR), ou a regra de conversão é uma segunda regra de conversão quando o segundo bloco de croma é o componente croma do segundo bloco de imagem (602, 602’); e - determinar um parâmetro de quantização de croma promediado e arredondado QpC com base no parâmetro de quantização de croma QpCp para o primeiro bloco de croma (901, 911, 921, 931, 941, 951, 961, 971) e no parâmetro de quantização de croma QpCq para o segundo bloco de croma (902, 912, 922, 932, 942, 952, 962, 972); - realizar um processo de filtragem para a borda de bloco de croma (903, 913, 923) com base em um resultado de decisão do processo de decisão.
[0449] Em uma possível forma de implantação do método, de acordo com o quarto aspecto como tal, a primeira regra de conversão é projetada para um bloco codificado residual Cb-Cr em conjunto (JCCR).
[0450] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, a segunda regra de conversão compreende uma segunda regra de conversão R21 e/ou uma segunda regra de conversão R22, em que a segunda regra de conversão R21 e a segunda regra de conversão R22 são projetadas para um primeiro componente croma (tal como um componente Cb) e um segundo componentes croma (tal como um componente Cr), respectivamente.
[0451] Em uma possível forma de implantação, a primeira regra de conversão é diferente de uma segunda regra de conversão R21 e uma segunda regra de conversão R22.
[0452] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, a regra de conversão é uma segunda regra de conversão R21 quando o primeiro bloco de croma é um primeiro componente croma (911) do primeiro bloco de imagem (601, 601’), e/ou a regra de conversão é uma segunda regra de conversão R22 quando o primeiro bloco de croma é um segundo componente croma (921) do primeiro bloco de imagem (601, 601’); ou a regra de conversão é uma segunda regra de conversão R21 quando o segundo bloco de croma é um primeiro componente croma (912) do segundo bloco de imagem (602, 602’), e/ou a regra de conversão é uma segunda regra de conversão R22 quando o segundo bloco de croma é um segundo componente croma (922) do segundo bloco de imagem (602, 602’).
[0453] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, a primeiro regra de conversão, a segunda regra de conversão R21 e a segunda regra de conversão R22 correspondem à (ou são representadas por) respectivas entradas de informações de uma tabela de mapeamento de QP de croma (tal como ChromaQPTable), ou a primeira regra de conversão, a segunda regra de conversão R21 e a segunda regra de conversão R22 correspondem a (ou são representadas por) uma primeira tabela de mapeamento de QP de croma (tal como ChromaQPTable), uma segunda tabela de mapeamento de QP de croma e uma terceira tabela de mapeamento de QP de croma, respectivamente.
[0454] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, a primeira regra de conversão, a segunda regra de conversão R21 e a segunda regra de conversão R22 correspondem a uma primeira fórmula, uma segunda fórmula e uma terceira fórmula, respectivamente; ou, a primeira regra de conversão, a segunda regra de conversão R21 e a segunda regra de conversão R22 são uma primeira fórmula, uma segunda fórmula e uma terceira fórmula, respectivamente.
[0455] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, a primeira regra de conversão é representada em termos de uma tabela de mapeamento de QP de croma (tal como ChromaQPTable) e uma primeira fórmula; a segunda regra de conversão R21 é representada em termos de uma tabela de mapeamento de QP de croma (tal como ChromaQPTable) e uma segunda fórmula; a segunda regra de conversão R22 é representada em termos de uma tabela de mapeamento de QP de croma (tal como ChromaQPTable) e uma terceira fórmula.
[0456] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, a primeira regra de conversão é representada em termos de uma tabela de mapeamento de QP de croma (tal como ChromaQPTable) e um primeiro conjunto de fórmulas;
a segunda regra de conversão R21 é representada em termos de uma tabela de mapeamento de QP de croma (tal como ChromaQPTable) e um segundo conjunto de fórmulas; a segunda regra de conversão R22 é representada em termos de uma tabela de mapeamento de QP de croma (tal como ChromaQPTable) e um terceiro conjunto de fórmulas.
[0457] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, a primeira regra de conversão, a segunda regra de conversão R21 e a segunda regra de conversão R22 são indicadas por um primeiro valor de índice, um segundo valor de índice e um terceiro valor de índice, respectivamente, ou a primeira regra de conversão, a segunda regra de conversão R21 e a segunda regra de conversão R22 correspondem a um primeiro valor de índice, um segundo valor de índice e um terceiro valor de índice, respectivamente.
[0458] Em uma possível forma de implantação, o primeiro valor de índice, o segundo valor de índice e o terceiro valor de índice são diferentes um do outro.
[0459] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, o primeiro valor de índice, o segundo valor de índice e o terceiro valor de índice são valores de número inteiro diferentes.
[0460] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, o primeiro valor de índice, o segundo valor de índice e o terceiro valor de índice são índices de componente (tal como cIdx) que têm diferentes valores que especificam bloco codificado Cb-Cr em conjunto, componente Cb e componente Cr, respectivamente.
[0461] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, o primeiro valor de índice é 3 ou 4 ou 5, o segundo valor de índice é 1 e o terceiro valor de índice é 2.
[0462] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, o parâmetro de quantização de croma promediado e arredondado Qpc é usado para o processo de decisão para a borda de bloco de croma ou o parâmetro de quantização de croma promediado e arredondado Qpc é usado, de maneira direta ou indireta, para determinar se a borda de bloco de croma (903, 913, 923) deve ser filtrada e/ou se uma filtragem longa deve ser realizada.
[0463] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, o valor de uma primeira variável limiar (tal como β′) é determinado com base no parâmetro de quantização de croma promediado e arredondado Qpc ou em um primeiro Qpc restrito usando uma tabela de consulta; e o valor de uma primeira variável (tal como β) é derivado com base no valor da primeira variável limiar (tal como β′); em que o valor da primeira variável (tal como β) é usado para o processo de decisão para a borda de bloco de croma ou o valor da primeira variável (tal como β) é usado para determinar se a borda de bloco de croma (903, 913, 923) deve ser filtrada e/ou se uma filtragem longa deve ser realizada.
[0464] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, o valor de uma segunda variável limiar (tal como tC′) é determinado com base no parâmetro de quantização de croma promediado e arredondado Qpc ou em um segundo Qpc restrito usando uma tabela de consulta; o valor de uma segunda variável (tal como tC) é derivado com base no valor da segunda variável limiar (tal como tC′); em que o valor da segunda variável (tal como t C) é usado para o processo de decisão para a borda de bloco de croma (ou o valor da segunda variável (tal como tC) é usado para determinar se a borda de bloco de croma (903, 913, 923) deve ser filtrada e/ou se uma filtragem longa deve ser realizada) e o processo de filtragem para a borda de bloco de croma.
[0465] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, a tabela de consulta compreende o mapeamento entre uma pluralidade das primeiras variáveis limiares, uma pluralidade das segundas variáveis limiares e uma pluralidade de parâmetros de quantização.
[0466] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, o primeiro bloco de croma é um primeiro componente croma (tal como componente Cb) do primeiro bloco de imagem e o segundo bloco de croma é um primeiro componente croma (tal como componente Cb) do segundo bloco de imagem, e/ou em que o primeiro bloco de croma é um segundo componente croma (tal como componente Cr) do primeiro bloco de imagem e o segundo bloco de croma é um segundo componente croma (tal como componente Cr) do segundo bloco de imagem.
[0467] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, pelo menos um dentre o primeiro componente croma (tal como componente Cb) do primeiro bloco de imagem e o primeiro componente croma (tal como componente Cb) do segundo bloco de imagem é codificado usando modo residual Cb-Cr em conjunto (JCCR), ou em que pelo menos um dentre o segundo componente croma (tal como componente Cr) do primeiro bloco de imagem e o segundo componente croma (tal como componente Cr) do segundo bloco de imagem é codificado usando modo residual Cb-Cr em conjunto (JCCR).
[0468] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, o primeiro bloco de imagem e o segundo bloco de imagem são blocos de transformada; ou o primeiro bloco de imagem e o segundo bloco de imagem são blocos de codificação.
[0469] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, é determinado se pelo menos um dentre o primeiro bloco de croma (901, 911, 921, 931, 941, 951, 961, 971) e o segundo bloco de croma (902, 912, 922, 932, 942, 952, 962, 972) é codificado usando modo residual Cb-Cr em conjunto (JCCR) ou o pelo menos um dentre o primeiro bloco de croma (901, 911, 921, 931, 941, 951, 961, 971) e o segundo bloco de croma (902, 912, 922, 932, 942, 952, 962, 972) é um bloco codificado residual Cb-Cr em conjunto
(JCCR) com base em uma flag de nível de TU de unidade de transformada (tal como tu_joint_cbcr_residual_flag).
[0470] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, quando a flag de nível de TU (tal como tu_joint_cbcr_residual_flag) para o primeiro bloco de imagem é verdadeiro, o primeiro bloco de croma é bloco codificado residual Cb-Cr em conjunto (JCCR) ou o primeiro bloco de croma é codificado usando modo residual Cb-Cr em conjunto (JCCR); ou quando a flag de nível de TU (tal como tu_joint_cbcr_residual_flag) para o segundo bloco de imagem é verdadeiro, o segundo bloco de croma é bloco codificado residual Cb-Cr em conjunto (JCCR) ou o segundo bloco de croma é codificado usando modo residual Cb-Cr em conjunto (JCCR).
[0471] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, em que o primeiro bloco de croma (901, 911, 921, 931, 941, 951, 961, 971) tem um tamanho de bloco de M*N ou N*M, e M e N representam a largura e altura do primeiro bloco de croma, respectivamente, ou N e M representam a largura e altura do primeiro bloco de croma, respectivamente; em que o segundo bloco de croma (902, 912, 922, 932, 942, 952, 962, 972) tem um tamanho de bloco de L*T ou T*L, e L e T representam a largura e altura do segundo bloco de croma, respectivamente, ou T e L representam a largura e altura do segundo bloco de croma, respectivamente, em que N ou T é um número inteiro par 2 n (tal como 4 ou 8 ou 16 ou 32) e n é um número inteiro positivo.
[0472] Em uma possível forma de implantação, - se a borda de bloco de croma (903, 913, 923) for uma borda de bloco de croma horizontal, a direção ao longo da altura N do primeiro bloco de croma sendo perpendicular à borda de bloco de croma, e a direção ao longo da altura T do segundo bloco de croma sendo perpendicular à borda de bloco de croma; ou - se a borda de bloco de croma (903, 913, 923) for uma borda de bloco de croma vertical (903, 913, 923), a direção ao longo da largura N do primeiro bloco de croma sendo perpendicular à borda de bloco (903, 913, 923), e a direção ao longo da largura T do segundo bloco de croma sendo perpendicular à borda de bloco (903, 913, 923).
[0473] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, o segundo bloco de imagem é um bloco atual e o primeiro bloco de imagem é um bloco vizinho ao bloco atual.
[0474] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, quando no caso em que o primeiro bloco de croma é codificado usando modo JCCR, e o modo JCCR é um primeiro modo JCCR (tal como 1), determinar um parâmetro de quantização QpCbp de primeiro componente croma (tal como componente Cb) para o primeiro componente croma (tal como componente Cb) do primeiro bloco de imagem com base em um primeiro QP de luma (tal como QpYP) de um primeiro bloco de luma (801) do primeiro bloco de imagem e na primeira regra de conversão; e determinar um parâmetro de quantização QpCrp de segundo componente croma (tal como componente Cr) para o segundo componente croma (tal como componente Cr) do primeiro bloco de imagem com base no parâmetro de quantização QpCbp de primeiro componente croma (tal como componente Cb).
[0475] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, quando no caso em que o segundo bloco de croma é codificado usando modo JCCR, e o modo JCCR é um primeiro modo JCCR (tal como 1), determinar um parâmetro de quantização QpCbq de primeiro componente croma (tal como componente Cb) para o primeiro componente croma (tal como componente Cb) do segundo bloco de imagem com base em um segundo QP de luma (tal como QpYQ) de um segundo bloco de luma (802) do segundo bloco de imagem e na primeira regra de conversão; e determinar um parâmetro de quantização QpCrq de segundo componente croma (tal como componente Cr) para o segundo componente croma (tal como componente Cr) do segundo bloco de imagem com base no parâmetro de quantização QpCbq de primeiro componente croma (tal como componente Cb).
[0476] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, se modo JCCR== 1, então, QpCb = ChromaQpTable[ 2 ][ Qpx ] ou, se modo JCCR== 1, então, QpCb = ChromaQpTable[ cIdx − 1 ][ Qpx ] , cIdx=3; e QpCr = (QpCb + 1) >> 1, em que Qpx representa um primeiro QP de luma (tal como QpYP) do primeiro bloco de luma do primeiro bloco de imagem, ou um segundo QP de luma (tal como QpYQ) do segundo bloco de luma do segundo bloco de imagem; em que ChromaQpTable representa uma tabela de mapeamento de QP de croma cujo índice é 2 ou uma tabela de mapeamento de QP de croma que compreende entradas de informações cujo índice é 2; ou em que ChromaQpTable representa uma tabela de mapeamento de QP de croma cujo índice é 3 ou uma tabela de mapeamento de QP de croma que compreende entradas de informações cujo índice é 3.
[0477] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, quando no caso em que o primeiro bloco de croma é codificado usando modo JCCR, e o modo JCCR é um segundo modo JCCR (tal como 2), determinar um parâmetro de quantização QpCbp de primeiro componente croma (tal como componente Cb) para o primeiro componente croma (tal como componente Cb) do primeiro bloco de imagem com base em um primeiro QP de luma (tal como QpYP) de um primeiro bloco de luma (801) do primeiro bloco de imagem e na primeira regra de conversão; e definir um parâmetro de quantização QpCrp de segundo componente croma (tal como componente Cr) para o segundo componente croma (tal como componente Cr) do primeiro bloco de imagem como o parâmetro de quantização QpCbp de primeiro componente croma (tal como componente Cb).
[0478] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, quando no caso em que o segundo bloco de croma é codificado usando modo JCCR, e o modo JCCR é um segundo modo JCCR (tal como 2), determinar um parâmetro de quantização QpCbq de primeiro componente croma (tal como componente Cb) para o primeiro componente croma (tal como componente Cb) do segundo bloco de imagem com base em um segundo QP de luma de um segundo bloco de luma (802) do segundo bloco de imagem e na primeira regra de conversão; e definir um parâmetro de quantização QpCrq de segundo componente croma (tal como componente Cr) para o segundo componente croma (tal como componente Cr) do segundo bloco de imagem como o parâmetro de quantização QpCbq de primeiro componente croma (tal como componente Cb).
[0479] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, se modo JCCR== 2, então, QpCb = ChromaQpTable[ 2 ][ Qpx ] ou, se modo JCCR== 2, então, QpCb = ChromaQpTable[ cIdx − 1 ][ Qpx ] , cIdx=3; e QpCr = QpCb, em que Qpx representa um primeiro QP de luma do primeiro bloco de luma do primeiro bloco de imagem, ou um segundo QP de luma do segundo bloco de luma do segundo bloco de imagem; em que ChromaQpTable representa uma tabela de mapeamento de QP de croma cujo índice é 2 ou uma tabela de mapeamento de QP de croma que compreende entradas de informações cujo índice é 2; ou em que ChromaQpTable representa uma tabela de mapeamento de QP de croma cujo índice é 3 ou uma tabela de mapeamento de QP de croma que compreende entradas de informações cujo índice é 3.
[0480] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, quando no caso em que o primeiro bloco de croma é codificado usando modo JCCR, e o modo JCCR é um terceiro modo JCCR (tal como 3), determinar um parâmetro de quantização QpCrp de segundo componente croma (tal como componente Cr) para o segundo componente croma (tal como componente Cr) do primeiro bloco de imagem com base em um primeiro QP de luma de um primeiro bloco de luma (801) do primeiro bloco de imagem e na primeira regra de conversão; e determinar um parâmetro de quantização QpCbp de primeiro componente croma (tal como componente Cb) para o primeiro componente croma (tal como componente Cb) do primeiro bloco de imagem com base no parâmetro de quantização QpCrp de segundo componente croma (tal como componente Cr).
[0481] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, quando no caso em que o segundo bloco de croma é codificado usando modo JCCR, e o modo JCCR é um terceiro modo JCCR (tal como 3), determinar um parâmetro de quantização QpCrq de segundo componente croma (tal como componente Cr) para o segundo componente croma (tal como componente Cr) do segundo bloco de imagem com base em um segundo QP de luma de um segundo bloco de luma (802) do segundo bloco de imagem e na primeira regra de conversão; e determinar um parâmetro de quantização QpCbq de primeiro componente croma (tal como componente Cb) para o primeiro componente croma (tal como componente Cb) do segundo bloco de imagem com base no parâmetro de quantização QpCrq de segundo componente croma (tal como componente Cr).
[0482] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, se modo JCCR== 3, então, QpCr = ChromaQpTable[ 2 ][ Qpx ] ou, se modo JCCR== 3, então, QpCr = ChromaQpTable[ cIdx − 1 ][ Qpx ], cIdx=3; e QpCb = (QpCr+ 1) >> 1, em que Qpx representa um primeiro QP de luma do primeiro bloco de luma do primeiro bloco de imagem, ou um segundo QP de luma do segundo bloco de luma do segundo bloco de imagem; em que ChromaQpTable representa uma tabela de mapeamento de QP de croma cujo índice é 2 ou uma tabela de mapeamento de QP de croma que compreende entradas de informações cujo índice é 2; ou em que ChromaQpTable representa uma tabela de mapeamento de QP de croma cujo índice é 3 ou uma tabela de mapeamento de QP de croma que compreende entradas de informações cujo índice é 3.
[0483] Em uma possível forma de implantação do método, de acordo com qualquer implantação precedente do quarto aspecto ou o quarto aspecto como tal, a etapa de determinar um parâmetro de quantização de croma promediado e arredondado Qp C com base no parâmetro de quantização de croma QpCp para o primeiro bloco de croma e no parâmetro de quantização de croma QpCq para o segundo bloco de croma, compreende:
determinar um parâmetro de quantização QpCb de primeiro componente croma (tal como componente Cb) promediado e arredondado com base - no parâmetro de quantização QpCbp de primeiro componente croma (tal como componente Cb) para o primeiro componente croma (tal como componente Cb) do primeiro bloco de imagem e - no parâmetro de quantização QpCbq de primeiro componente croma (tal como componente Cb) para o primeiro componente croma (tal como componente Cb) do segundo bloco de imagem.
[0484] Em uma possível forma de implementação do método, de acordo com qualquer implementação precedente do quarto aspecto ou o quarto aspecto como tal, a etapa de determinar um parâmetro de quantização de croma promediado e arredondado Qp C com base no parâmetro de quantização de croma QpCp para o primeiro bloco de croma e no parâmetro de quantização de croma QpCq para o segundo bloco de croma, compreende: determinar um parâmetro de quantização QpCr de segundo componente croma (tal como componente Cr) promediado e arredondado com base - no parâmetro de quantização QpCrp de segundo componente croma (tal como componente Cr) para o segundo componente croma (tal como componente Cr) do primeiro bloco de imagem e - no parâmetro de quantização QpCrq de segundo componente croma (tal como componente Cr) para o segundo componente croma (tal como componente Cr) do segundo bloco de imagem. Solução 4:
[0485] Com base no tipo de bloco de croma, isto é, Cb, Cr ou Cb-Cr (componente Cb, componente Cr ou bloco codificado Cb-Cr em conjunto), e o modo Cb-Cr em conjunto para tipo de bloco Cb-Cr é igual a 2, isto é, se o TuCResMode[ xCb ][ yCb ] do determinado bloco for igual a 2, conforme mostrado na equação 8-952 abaixo, o QP de luma é mapeado para o QP de croma para cada um dentre os blocos P e Q separadamente usando-se uma respectiva regra de conversão (por exemplo, uma combinação de uma tabela de mapeamento de QP de croma e respectivas fórmulas) e, então, a média dos valores de QP de croma de blocos P e Q é definida como o valor de QP final que é, então, usado para operações adicionais de desblocagem.
[0486] Um exemplo para as regras de conversão é o seguinte:
[0487] A regra de conversão para o componente Cb é fornecida abaixo na seção 8.7.1, usando a fórmula 8-935, 8-936 e 8-939; em outras palavras, as equações 8-935, 8-936 e 8-939 são um exemplo da segunda regra de conversão R21 que é projetada para um primeiro componente croma (tal como um componente Cb). A equação 8-936 é representada em termos de uma tabela de mapeamento de QP de croma.
[0488] A regra de conversão para o componente Cr é fornecida abaixo na seção 8.7.1, usando a fórmula 8-935, 8-937 e 8-940; em outras palavras, as equações 8-935, 8-937 e 8-940 são um exemplo da segunda regra de conversão R22 que é projetada para um segundo componentes croma (tal como um componente Cr). A equação 8-937 é representada em termos de uma tabela de mapeamento de QP de croma.
[0489] A regra de conversão para o componente CbCr (a saber, componente Cb-Cr em conjunto) é fornecida abaixo na seção 8.7.1, usando a fórmula 8-935, 8-938 e 8-941; em outras palavras, as equações 8-935, 8-938 e 8-941 são um exemplo de primeira regra de conversão que é projetada para um componente Cb-Cr em conjunto. A equação 8-938 é representada em termos de uma tabela de mapeamento de QP de croma.
[0490] Observa-se que a presente revelação propõe o uso de diferentes regras de conversão para diferentes componentes croma, mas não é limitada às regras particulares ou fórmulas particulares mencionadas na seção
8.7.1.
[0491] As mudanças exatas no texto de especificação para a solução 4 são conforme fornecido abaixo.
[0492] 8.8.3.6.3 Processo de decisão para bordas de bloco de croma
[0493] Esse processo é apenas invocado quando ChromaArrayType não é igual a 0.
[0494] Entradas para esse processo são: – um arranjo de amostra de imagem croma recPicture, – uma localização croma ( xCb, yCb ) que especifica a amostra topo-esquerda do bloco de codificação de croma atual em relação à amostra de croma topo-esquerda da imagem atual, – uma localização croma ( xBl, yBl ) que especifica a amostra topo- esquerda do bloco de croma atual em relação à amostra topo-esquerda do bloco de codificação de croma atual, – uma variável edgeType que especifica se uma borda vertical (EDGE_VER) ou horizontal (EDGE_HOR) é filtrada, – uma variável cIdx que especifica o índice de componente de cor, – uma variável cQpPicOffset que especifica o deslocamento de parâmetro de quantização de croma de nível de imagem, – uma variável bS que especifica a intensidade de filtragem de fronteira, – uma variável maxFilterLengthCbCr.
[0495] Saídas desse processo são – a variável modificada maxFilterLengthCbCr, – a variável tC.
[0496] A variável maxK é derivada da seguinte maneira: – Se edgeType for igual a EDGE_VER, o seguinte se aplica: maxK = ( SubHeightC = = 1 ) ? 3 : 1 (8-1124) – De outro modo, (edgeType é igual a EDGE_HOR), o seguinte se aplica: maxK = ( SubWidthC = = 1 ) ? 3 : 1 (8-1125)
[0497] Os valores pi e qi com i = 0.. maxFilterLengthCbCr e k = 0..maxK são derivados da seguinte maneira: – Se edgeType for igual a EDGE_VER, o seguinte se aplica:: qi,k = recPicture[ xCb + xBl + i ][ yCb + yBl + k ] (8-1126) pi,k = recPicture[ xCb + xBl − i − 1 ][ yCb + yBl + k ] (8-1127) subSampleC = SubHeightC (8-1128) variável QpQ é derivada invocando-se o processo de derivação de QP de croma, conforme especificado na cláusula 8.8.3.6.10, com localização croma (xCb + xBl + i , yCb + yBl + k ) e cIdx como entradas // Na presente invenção, QpQ é o valor de QP de croma, a fim de distinguir valor de QP de luma e valor de QP de croma, será representado por QpCQ na parte reivindicatória// variável QpP é derivada invocando-se o processo de derivação de QP de croma, conforme especificado na cláusula 8.8.3.6.10, com localização croma
(xCb + xBl − i − 1 , yCb + yBl + k ) e cIdx como entradas // Na presente invenção, Qpp é o valor de QP de croma, a fim de distinguir valor de QP de luma e valor de QP de croma, será representado por QpCP na parte reivindicatória // – De outro modo, (edgeType é igual a EDGE_HOR), o seguinte se aplica: qi,k = recPicture[ xCb + xBl + k ][ yCb + yBl + i ] (8-1129) pi,k = recPicture[ xCb + xBl + k ][ yCb + yBl − i − 1 ] (8-1130) subSampleC = SubWidthC (8-1131) variável QpQ é derivada invocando-se o processo de derivação de QP de croma, conforme especificado na cláusula 8.8.3.6.10, com localização croma (xCb + xBl + k , yCb + yBl + i ) e cIdx como entradas// QpQ é o valor de QP de croma, será representado por QpCq na parte reivindicatória// variável QpP é derivada invocando-se o processo de derivação de QP de croma, conforme especificado na cláusula 8.8.3.6.10, com localização croma (xCb + xBl + k , yCb + yBl − i − 1 ) e cIdx como entradas// QpP é o valor de QP de croma, será representado por QpCp na parte reivindicatória //
[0498] O valor da variável β′ é determinado conforme especificado na Tabela 8-18 com base no parâmetro de quantização Q derivado da seguinte maneira: Q = Clip3( 0, 63, QpC + ( slice_beta_offset_div2 << 1 ) ) (8-1134) em que slice_beta_offset_div2 é o valor do elemento de sintaxe slice_beta_offset_div2 para a fatia que contém amostra q 0,0.
[0499] A variável β é derivada da seguinte maneira: β = β′ * ( 1 << ( BitDepthC − 8 ) ) (8-1135)
[0500] O valor da variável tC′ é determinado conforme especificado na Tabela 8-18 com base no parâmetro de quantização de croma Q derivado da seguinte maneira: Q = Clip3( 0, 65, QpC + 2 * ( bS − 1 ) + ( slice_tc_offset_div2 << 1 ) ) (8-1136) em que slice_tc_offset_div2 é o valor do elemento de sintaxe slice_tc_offset_div2 para a fatia que contém amostra q 0,0.
[0501] A variável tC é derivada da seguinte maneira: tC = ( BitDepthC < 10 ) ? ( tC′ + 2 ) >> ( 10 − BitDepthC ) : tC′ * ( 1 << ( BitDepthC − 8 ) ) (8-1137)
……………….
[0502] 8.8.3.6.10 Processo de derivação de parâmetro de quantização para blocos de codificação de croma
[0503] Esse processo é apenas invocado quando ChromaArrayType não é igual a 0.
[0504] Entradas para esse processo são: – Um bloco de codificação de croma contendo uma determinada localização de amostra de croma (xCb, yCb ) – uma variável cIdx que especifica o índice de componente de cor do determinado bloco de codificação de croma,
[0505] Saída desse processo é um parâmetro de quantização qP do bloco de codificação contendo a amostra (xCb, yCb ) – se TuCResMode[ xCb ][ yCb ] for igual a 2, o seguinte se aplica: qP = Qp′CbCr - QpBdOffsetC (8-952) – De outro modo, se cIdx for igual a 1, o seguinte se aplica: qP = Qp′Cb- QpBdOffsetC (8-953) – De outro modo (cIdx é igual a 2), o seguinte se aplica: qP = Qp′Cr- QpBdOffsetC (8-954)
[0506] Observa-se que as variáveis Qp′CbCr ,Qp′Cb, Qp′Cr são derivadas na cláusula “8.7.1 Processo de derivação para parâmetros de quantização”.
[0507] Em uma implantação exemplificativa, o QPBdoffset é subtraído do valor de QP de croma (conforme mostrado em 8-952, 8-953, 8-954) e a promediação é aplicada (conforme mostrado na seção 8.8.3.6.3 apresentada abaixo). Em um projeto alternativo, o QPBdoffset pode ser subtraído do valor de QP de croma durante a etapa de promediação. Os efeitos desses dois projetos alternativos são idênticos.
[0508] Os detalhes de um processo de derivação para parâmetros de quantização (conforme mostrado em S1611 ou S1621 da Figura 17), de acordo com algumas modalidades da presente revelação, são descritos na seguinte seção 8.7.1:
[0509] 8.7.1 Processo de derivação para parâmetros de quantização
[0510] Entradas para esse processo são: – uma localização luma ( xCb, yCb ) que especifica a amostra de luma topo-esquerda do bloco de codificação atual em relação à amostra de luma topo-esquerda da imagem atual, – uma variável cbWidth que especifica a largura do bloco de codificação atual em amostras de luma, – uma variável cbHeight que especifica a altura do bloco de codificação atual em amostras de luma, – uma variável treeType que especifica se uma árvore única (SINGLE_TREE) ou uma árvore dupla é usada para particionar as CTUs e, quando uma árvore dupla é usada, se os componentes luma (DUAL_TREE_LUMA) ou croma (DUAL_TREE_CHROMA) são atualmente processados.
[0511] Nesse processo, o parâmetro de quantização de luma Qp′Y e os parâmetros de quantização de croma Qp′Cb e Qp′Cr são derivados.
[0512] A localização luma ( xQg, yQg ), especifica a amostra de luma topo-esquerda do grupo de quantização atual em relação à amostra de luma topo esquerda da imagem atual. As posições horizontal e vertical xQg e yQg são definidas como iguais a CuQgTopLeftX e CuQgTopLeftY, respectivamente. NOTA – : O grupo de quantização atual é uma região retangular dentro de um bloco de árvore de codificação que compartilha o mesmo qP Y_PRED. Sua largura e altura são iguais à largura e altura do nó de árvore de codificação do qual a posição de amostra de luma topo-esquerda é atribuída às variáveis CuQgTopLeftX e CuQgTopLeftY.
[0513] Quando treeType é igual a SINGLE_TREE ou DUAL_TREE_LUMA, o parâmetro de quantização de luma predito qPY_PRED é derivado pelas seguintes etapas ordenadas:
1. A variável qPY_PREV é derivada da seguinte maneira: – Se uma ou mais dentre as condições a seguir forem verdadeiras, qPY_PREV é definido como igual a SliceQpY: – O grupo de quantização atual é o primeiro grupo de quantização em uma fatia. – O grupo de quantização atual é o primeiro grupo de quantização em um brick. – O grupo de quantização atual é o primeiro grupo de quantização em uma linha de CTB de um brick e entropy_coding_sync_enabled_flag é igual a 1. – De outro modo, qPY_PREV é definido como igual ao parâmetro de quantização de luma QpY da última unidade de codificação de luma no grupo de quantização anterior em ordem de decodificação.
2. O processo de derivação para disponibilidade de bloco vizinho, conforme especificado na cláusula 6.4.4, é invocado com a localização ( xCurr, yCurr ) definida como igual a ( xCb, yCb ), a localização vizinha ( xNbY, yNbY ) definida como igual a ( xQg − 1, yQg ), checkPredModeY definido como igual a FALSO, e cIdx definido como igual a 0 como entradas, e a saída é atribuída a availableA. A variável qPY_A é derivada da seguinte maneira: – Se uma ou mais dentre as condições a seguir forem verdadeiras, qPY_A é definido como igual a qPY_PREV: – availableA é igual a FALSO. – O CTB contendo o bloco de codificação de luma que abrange a localização luma ( xQg − 1, yQg ) não é igual ao CTB contendo o bloco de codificação de luma atual em ( xCb, yCb ), isto é, todas as seguintes condições são verdadeiras: – ( xQg − 1 ) >> CtbLog2SizeY não é igual a ( xCb ) >> CtbLog2SizeY – ( yQg ) >> CtbLog2SizeY não é igual a ( yCb ) >> CtbLog2SizeY – De outro modo, qPY_A é definido como igual ao parâmetro de quantização de luma QpY da unidade de codificação contendo o bloco de codificação de luma abrangendo ( xQg − 1, yQg ).
3. O processo de derivação para disponibilidade de bloco vizinho, conforme especificado na cláusula 6.4.4, é invocado com a localização ( xCurr, yCurr ) definida como igual a ( xCb, yCb ), a localização vizinha ( xNbY, yNbY ) definida como igual a ( xQg, yQg − 1 ), checkPredModeY definido como igual a FALSO, e cIdx definido como igual a 0 como entradas, e a saída é atribuída a availableB. A variável qPY_B é derivada da seguinte maneira: – Se uma ou mais dentre as condições a seguir forem verdadeiras, qPY_B é definido como igual a qPY_PREV: – availableB é igual a FALSO. – O CTB contendo o bloco de codificação de luma abrangendo a localização luma ( xQg, yQg − 1 ) não é igual ao CTB contendo o bloco de codificação de luma atual em ( xCb, yCb ), isto é, todas as seguintes condições são verdadeiras: – ( xQg ) >> CtbLog2SizeY não é igual a ( xCb ) >> CtbLog2SizeY – ( yQg − 1 ) >> CtbLog2SizeY não é igual a ( yCb ) >> CtbLog2SizeY – De outro modo, qPY_B é definido como igual ao parâmetro de quantização de luma QpY da unidade de codificação contendo o bloco de codificação de luma abrangendo ( xQg, yQg − 1 ).
4. O parâmetro de quantização de luma predito qPY_PRED é derivado da seguinte maneira: – Se todas as condições a seguir forem verdadeiras, então, qPY_PRED é definido como igual ao parâmetro de quantização de luma QpY da unidade de codificação contendo o bloco de codificação de luma abrangendo ( xQg, yQg − 1 ): – availableB é igual a TRUE. – o grupo de quantização atual é o primeiro grupo de quantização em uma linha de CTB dentro de um brick – De outro modo, qPY_PRED é derivado da seguinte maneira: qPY_PRED = ( qPY_A + qPY_B + 1 ) >> 1 (8-932)
[0514] A variável QpY é derivada da seguinte maneira: QpY = ( ( qPY_PRED + CuQpDeltaVal + 64 + 2 * QpBdOffsetY )%( 64 + QpBdOffsetY ) ) − QpBdOffsetY (8-933)
[0515] O parâmetro de quantização de luma Qp′Y é derivado da seguinte maneira: Qp′Y = QpY + QpBdOffsetY (8-934)
[0516] Quando ChromaArrayType não é igual a 0 e treeType é igual a SINGLE_TREE ou DUAL_TREE_CHROMA, o seguinte se aplica: – Quando treeType é igual a DUAL_TREE_CHROMA, a variável QpY é definida como igual ao parâmetro de quantização de luma QpY da unidade de codificação de luma que abrange a localização luma ( xCb + cbWidth / 2, yCb + cbHeight / 2 ). – As variáveis qPCb, qPCr e qPCbCr são derivadas da seguinte maneira: qPiChroma = Clip3( −QpBdOffsetC, 63, QpY ) (8-935) qPiCb = ChromaQpTable[ 0 ][ qPiChroma ] (8-936) qPiCr = ChromaQpTable[ 1 ][ qPiChroma ] (8-937) qPiCbCr = ChromaQpTable[ 2 ][ qPiChroma ] (8-938) – Os parâmetros de quantização de croma para os componentes Cb e Cr, Qp′Cb e Qp′Cr, e codificação Cb-Cr em conjunto Qp′CbCr são derivados da seguinte maneira: Qp′Cb = Clip3( −QpBdOffsetC, 63, qPCb + pps_cb_qp_offset + slice_cb_qp_offset +CuQp OffsetCb ) + QpBdOffsetC (8-939) Qp′Cr = Clip3( −QpBdOffsetC, 63, qPCr + pps_cr_qp_offset + slice_cr_qp_off set +CuQpOffsetCr ) + QpBdOffsetC (8-940) Qp′CbCr = Clip3( −QpBdOffsetC, 63, qPCbCr + pps_cbcr_qp_offset + slice_cbcr_ qp_offset +CuQpOffsetCbCr ) + QpBdOffsetC (8-941)
[0517] Observa-se que, conforme ilustrado em 8-935, o QP de luma (por exemplo, QpY) não é diretamente usado para derivar o QP de croma(por exemplo, qPiCb , qPiCr or qPiCbCr ). Em um exemplo, uma etapa adicional, tal como clipping, pode ser aplicada ao QP de luma (QpY).
[0518] O processo de decisão para as bordas de bloco de croma (conforme mostrado em S1601 da Figura16), de acordo com a solução 4 da presente revelação, é descrito na seção 8.8.3.6.3 da seguinte maneira:
[0519] 8.8.3.6.3 Processo de decisão para bordas de bloco de croma
[0520] As variáveis QpQ e QpP são definidas como iguais a Qp′CbCr − QpBdOffsetC quando TuCResMode[ xCb ][ yCb ] é igual a 2, Qp′Cb − QpBdOffsetC quando cIdx é igual a 1; Qp′Cr − QpBdOffsetC quando cIdx é igual a 2 das unidades de codificação que incluem os blocos de codificação contendo a amostra q0,0 e p0,0, respectivamente.
[0521] A variável QpC é derivada da seguinte maneira: QpC = ( QpQ + QpP + 1 ) >> 1
[0522] Consulte a seção 8.8.3.6.3, em uma implantação exemplificativa, o QPBdoffset é subtraído do valor de QP de croma (conforme ilustrado em 8-952, 8-953, 8-954) e, então, a promediação é aplicada diretamente (conforme ilustrado na seção 8.8.3.6.3). Pode-se entender que é substancialmente igual ao modo em que o QPBdoffset é subtraído durante a etapa de promediação. Os detalhes exemplificativos da etapa 1631(conforme mostrado na Figura 17) são descritos na seção acima 8.8.3.6.3 da especificação VVC, e não serão repetidos a seguir. Solução 5:
[0523] A solução 5 é basicamente similar à solução 4 exceto que as regras de conversão são um pouco diferentes. O texto de especificação é anexado abaixo.
[0524] 8.8.3.6.3 Processo de decisão para bordas de bloco de croma
[0525] Esse processo é apenas invocado quando ChromaArrayType não é igual a 0.
[0526] Entradas para esse processo são: – um arranjo de amostra de imagem croma recPicture, – uma localização croma ( xCb, yCb ) que especifica a amostra topo-esquerda do bloco de codificação de croma atual em relação à amostra de croma topo-esquerda da imagem atual, – uma localização croma ( xBl, yBl ) que especifica a amostra topo-esquerda do bloco de croma atual em relação à amostra topo-esquerda do bloco de codificação de croma atual, – uma variável edgeType que especifica se uma borda vertical (EDGE_VER) ou horizontal (EDGE_HOR) é filtrada, – uma variável cIdx que especifica o índice de componente de cor, – uma variável cQpPicOffset que especifica o deslocamento de parâmetro de quantização de croma de nível de imagem, – uma variável bS que especifica a intensidade de filtragem de fronteira, – uma variável maxFilterLengthCbCr.
[0527] Saídas desse processo são – a variável modificada maxFilterLengthCbCr, – a variável tC.
[0528] A variável maxK é derivada da seguinte maneira: – Se edgeType for igual a EDGE_VER, o seguinte se aplica: maxK = ( SubHeightC = = 1 ) ? 3 : 1 (8-1124) – De outro modo, (edgeType é igual a EDGE_HOR), o seguinte se aplica: maxK = ( SubWidthC = = 1 ) ? 3 : 1 (8-1125)
[0529] Os valores pi e qi com i = 0.. maxFilterLengthCbCr e k = 0..maxK são derivados da seguinte maneira: – Se edgeType for igual a EDGE_VER, o seguinte se aplica:: qi,k = recPicture[ xCb + xBl + i ][ yCb + yBl + k ] (8-1126) pi,k = recPicture[ xCb + xBl − i − 1 ][ yCb + yBl + k ] (8-1127) subSampleC = SubHeightC (8-1128) variável QpQ é derivada invocando-se o processo de derivação de QP de croma, conforme especificado na cláusula 8.8.3.6.10, com localização croma (xCb + xBl + i , yCb + yBl + k ) e cIdx como entradas variável QpP é derivada invocando-se o processo de derivação de QP de croma, conforme especificado na cláusula 8.8.3.6.10, com localização croma (xCb + xBl − i − 1 , yCb + yBl + k ) e cIdx como entradas – De outro modo, (edgeType é igual a EDGE_HOR), o seguinte se aplica: qi,k = recPicture[ xCb + xBl + k ][ yCb + yBl + i ] (8-1129) pi,k = recPicture[ xCb + xBl + k ][ yCb + yBl − i − 1 ] (8-1130) subSampleC = SubWidthC (8-1131) variável QpQ é derivada invocando-se o processo de derivação de QP de croma, conforme especificado na cláusula 8.8.3.6.10, com localização croma (xCb + xBl + k , yCb + yBl + i ) e cIdx como entradas variável QpP é derivada invocando-se o processo de derivação de QP de croma, conforme especificado na cláusula 8.8.3.6.10 com localização croma (xCb + xBl + k , yCb + yBl − i − 1 ) e cIdx como entradas
QpC = ChromaQpTable[ cIdx − 1 ][ qPi ] (8-1133)
[0530] 8.8.3.6.10 Processo de derivação de parâmetro de quantização para blocos de codificação de croma
[0531] Esse processo é apenas invocado quando ChromaArrayType não é igual a 0.
[0532] Entradas para esse processo são: – Um bloco de codificação de croma contendo uma determinada localização de amostra de croma (xCb, yCb ) – uma variável cIdx que especifica o índice de componente de cor do determinado bloco de codificação de croma,
[0533] Saída desse processo é um parâmetro de quantização qP do bloco de codificação contendo a amostra (xCb, yCb ) – se TuCResMode[ xCb ][ yCb ] for igual a 2, o seguinte se aplica: qP = QpCbCr (8-952) cQpPicOffset é definido como igual a pps_joint_cbcr_qp_offset – De outro modo, se cIdx for igual a 1, o seguinte se aplica: qP = QpCb (8-953) – De outro modo (cIdx é igual a 2), o seguinte se aplica: qP = QpCr (8-954) qP = Clip3( 0, 63, qP + cQpPicOffset )
[0534] NOTA – a variável cQpPicOffset fornece um ajuste para o valor de pps_cb_qp_offset ou pps_cr_qp_offset, de acordo com o fato de o componente croma filtrado ser o componente Cb ou Cr. Entretanto, para evitar a necessidade de variar a quantidade do ajuste dentro da imagem, o processo de filtragem não inclui um ajuste para o valor de slice_cb_qp_offset ou slice_cr_qp_offset nem (quando cu_chroma_qp_offset_enabled_flag é igual a 1) para o valor de CuQpOffsetCb, CuQpOffsetCr ou CuQpOffsetCbCr.
[0535] NOTA – As variáveis QpCbCr , QpCb , QpCr são derivadas conforme na seção 8.7.1 (Processo de derivação para parâmetros de quantização)
[0536] Na equação 8-935, QpY representa um primeiro QP de luma (tal como QpYP) de um primeiro bloco de luma (801) do primeiro bloco de imagem (601, 601’), ou um segundo QP de luma (tal como QpYQ) de um segundo bloco de luma (802) do segundo bloco de imagem (602, 602’).
[0537] Nas equações 8-936, 8-937, 8-938, ChromaQpTable representa uma tabela de mapeamento de QP de croma (tal como ChromaQPTable).
[0538] QpBdOffsetC representa o valor do deslocamento de faixa de parâmetro de quantização de croma. O valor do QpBdOffsetC é derivado da seguinte maneira: QpBdOffsetC = 6 * bit_depth_chroma_minus8 em que “bit_depth_chroma_minus8” é um parâmetro sinalizado no conjunto de parâmetro de sequência (SPS).
[0539] pps_cb_qp_offset e pps_cr_qp_offset especificam os deslocamentos para o parâmetro de quantização de luma Qp′Y usado para derivar Qp′Cb e Qp′Cr, respectivamente. Os valores de pps_cb_qp_offset e pps_cr_qp_offset devem estar na faixa de −12 a +12, inclusive. Quando ChromaArrayType é igual a 0, pps_cb_qp_offset e pps_cr_qp_offset não são usados no processo de decodificação e decodificadores devem ignorar seu valor.
[0540] pps_joint_cbcr_qp_offset especifica o deslocamento para o parâmetro de quantização de luma Qp′Y usado para derivar Qp′CbCr. O valor de pps_joint_cbcr_qp_offset deve estar na faixa de −12 a +12, inclusive. Quando ChromaArrayType é igual a 0 ou sps_joint_cbcr_enabled_flag é igual a 0, pps_joint_cbcr_qp_offset não é usado no processo de decodificação e decodificadores devem ignorar seu valor.
[0541] slice_cb_qp_offset especifica uma diferença a ser adicionada ao valor de pps_cb_qp_offset ao determinar o valor do parâmetro de quantização Qp′Cb. O valor de slice_cb_qp_offset deve estar na faixa de −12 a +12, inclusive. Quando slice_cb_qp_offset não está presente, infere-se que seja igual a 0. O valor de pps_cb_qp_offset + slice_cb_qp_offset deve estar na faixa de −12 a +12, inclusive.
[0542] slice_cr_qp_offset especifica uma diferença a ser adicionada ao valor de pps_cr_qp_offset ao determinar o valor do parâmetro de quantização Qp′Cr. O valor de slice_cr_qp_offset deve estar na faixa de −12 a +12, inclusive. Quando slice_cr_qp_offset não está presente, infere-se que seja igual a 0. O valor de pps_cr_qp_offset + slice_cr_qp_offset deve estar na faixa de −12 a +12, inclusive.
[0543] slice_joint_cbcr_qp_offset especifica uma diferença a ser adicionada ao valor de pps_joint_cbcr_qp_offset ao determinar o valor do Qp′CbCr. O valor de slice_joint_cbcr_qp_offset deve estar na faixa de −12 a +12, inclusive. Quando slice_joint_cbcr_qp_offset não está presente, infere-se que seja igual a 0. O valor de pps_joint_cbcr_qp_offset + slice_joint_cbcr_qp_offset deve estar na faixa de −12 a +12, inclusive.
[0544] cu_chroma_qp_offset_flag quando presente e igual a 1, especifica que uma entrada no cb_qp_offset_list[ ] é usada para determinar o valor de CuQpOffsetCb, uma entrada correspondente no cr_qp_offset_list[ ] é usada para determinar o valor de CuQpOffsetCr, e uma entrada correspondente no joint_cbcr_qp_offset_list[ ] é usada para determinar o valor de CuQpOffsetCbCr. cu_chroma_qp_offset_flag igual a 0 especifica que essas listas não são usadas para determinar os valores de CuQpOffsetCb, CuQpOffsetCr e CuQpOffsetCbCr.
[0545] cu_chroma_qp_offset_idx, quando presente, especifica o índice no cb_qp_offset_list[ ], cr_qp_offset_list[ ], e joint_cbcr_qp_offset_list[ ] que é usado para determinar o valor de CuQpOffsetCb, CuQpOffsetCr e CuQpOffsetCbCr. Quando presente, o valor de cu_chroma_qp_offset_idx deve estar na faixa de 0 a chroma_qp_offset_list_len_minus1, inclusive. Quando não presente, infere-se que o valor de cu_chroma_qp_offset_idx seja igual a 0.
[0546] Quando cu_chroma_qp_offset_flag está presente, o seguinte se aplica: – A variável IsCuChromaQpOffsetCoded é definida como igual a 1. – As variáveis CuQpOffsetCb, CuQpOffsetCr e CuQpOffsetCbCr são derivadas da seguinte maneira: – Se cu_chroma_qp_offset_flag for igual a 1, o seguinte se aplica: CuQpOffsetCb = cb_qp_offset_list[ cu_chroma_qp_offset_idx ] (7-166) CuQpOffsetCr = cr_qp_offset_list[ cu_chroma_qp_offset_idx ] (7-167) CuQpOffsetCbCr = joint_cbcr_qp_offset_list[ cu_chroma_qp_offset_idx ] (7-168) – De outro modo (cu_chroma_qp_offset_flag é igual a 0), CuQpOffsetCb, CuQpOffsetCr e CuQpOffsetCbCr são todos definidos como iguais a 0.
[0547] cb_qp_offset_list[ i ], cr_qp_offset_list[ i ], e joint_cbcr_qp_offset_list[ i ], especificam deslocamentos usados na derivação de Qp′Cb, Qp′Cr, e Qp′CbCr, respectivamente. Os valores de cb_qp_offset_list[ i ], cr_qp_offset_list[ i ] e joint_cbcr_qp_offset_list[ i ] devem estar na faixa de −12 a +12, inclusive.
[0548] De maneira especial, uma modalidade de dispositivo é basicamente similar a uma modalidade de método e, portanto, é descrita de maneira breve; para processos de execução de funções específicas de cada unidade, referência pode ser feita a descrições parciais na modalidade do método.
[0549] A Figura 10 é um diagrama de blocos que ilustra um aparelho de filtro de desblocagem exemplificativo 1000 de acordo com as técnicas descritas nesta revelação (mais detalhes serão descritos abaixo, por exemplo, com base nas Figuras 9A a 9H ou nas Figuras 11 a 13 ou nas Figura 16 e 17). O aparelho de filtro de desblocagem 1000 pode ser configurado para realizar técnicas de desblocagem em conformidade com vários exemplos descritos na presente revelação. Em geral, qualquer uma ou ambas dentre a unidade de filtro loop 220 da Figura 2 e a unidade de filtro loop 320 da Figura 3 podem incluir componentes substancialmente similares àqueles do aparelho de filtro de desblocagem 1000. Outros dispositivos de codificação de vídeo, tais como codificadores de vídeo, decodificadores de vídeo, codificador/decodificadores (CODECs) de vídeo, e similares também podem incluir componentes substancialmente similares a filtro de desblocagem 1000. O aparelho de filtro de desblocagem 1000 pode ser implantado em hardware, software ou firmware, ou qualquer combinação dos mesmos. Quando implantado em software ou firmware, hardware correspondente (tal como um ou mais processadores ou unidades de processamento e memória para armazenar instruções para o software ou firmware) também pode ser fornecido.
[0550] No exemplo da Figura 10, o aparelho de filtro de desblocagem 1000 inclui unidade de determinação de desblocagem 1004, definições de suporte 1002 armazenadas em memória, unidade de filtragem de desblocagem 1006, parâmetros de filtro de desblocagem 1008 armazenados em memória, unidade localizadora de borda 1003 e estrutura de dados de localizações de borda 1005. Qualquer um ou todos os componentes de filtro de desblocagem 1000 podem ser funcionalmente integrados. Os componentes do filtro de desblocagem 1000 são ilustrados separadamente apenas para fins de ilustração.
Em geral, o filtro de desblocagem 1000 recebe dados para blocos decodificados, por exemplo, de um componente de soma 114, 214 que combina dados de predição com dados residuais para os blocos. Os dados podem incluir, ainda, uma indicação de como os blocos foram preditos. No exemplo descrito abaixo, o aparelho de filtro de desblocagem 1000 é configurado para receber dados incluindo um bloco de vídeo decodificado associado a um CTB (ou uma CTU) e um quadtree de CU para o CTB, em que o quadtree de CU descreve o modo como o CTB é particionado em CUs ou CBs e TUs ou TBs.
[0551] O aparelho de filtro de desblocagem 1000 pode manter estrutura de dados de localizações de borda 1005 em uma memória do aparelho de filtro de desblocagem 1000, ou em uma memória externa fornecida por um dispositivo de codificação de vídeo correspondente. Em algum exemplo, a unidade localizadora de borda 1003 pode receber um quadtree que corresponde a um CTB que indica como o CTB é particionado em CUs ou CBs e TUs ou TBs. A unidade localizadora de borda 1003 pode analisar, então, o quadtree de CU para determinar bordas entre blocos de vídeo decodificados associados a TUs ou CUs no CTB que são candidatos para desblocagem.
[0552] A estrutura de dados de localizações de borda 1005 pode compreender um arranjo que tem uma dimensão horizontal, uma dimensão vertical e uma dimensão representativa de bordas horizontais e bordas verticais. Em geral, bordas entre blocos de vídeo podem ocorrer entre dois blocos de vídeo associados a CUs de menor tamanho possível do CTB, ou TUs ou CUs. Supondo que o CTB tenha um tamanho de N×N, e supondo que a CU de menor tamanho possível do CTB tenha tamanho M×M, o arranjo pode compreender um tamanho de [N/M]×[N/M]×2, em que “2” representa as duas possíveis direções de bordas entre CUs (horizontal e vertical). Por exemplo, supondo que um CTB tenha 64×64 pixels e uma CU ou TU 8×8 de menor tamanho possível, o arranjo pode compreender [8]×[8]×[2] entradas.
[0553] Cada entrada pode corresponder, em geral, a uma possível borda entre dois blocos de vídeo. As bordas podem não existir, de fato, em cada uma das posições dentro da LCU que corresponde a cada uma dentre as entradas da estrutura de dados de localizações de borda 1005. Assim, valores da estrutura de dados podem ser inicializados para falso. Em geral, a unidade localizadora de borda 1003 pode analisar o quadtree de CU para determinar localizações de bordas entre dois blocos de vídeo associados a TUs ou CUs do CTB e definir valores correspondentes na estrutura de dados de localizações de borda 1005 para verdadeiros.
[0554] Em geral, as entradas do arranjo podem descrever se uma borda correspondente existe no CTB como uma candidata para desblocagem. Ou seja, quando a unidade localizadora de borda 1003 determina que uma borda existe entre dois blocos de vídeo vizinhos associados a TUs ou CUs do CTB, a unidade localizadora de borda 1003 pode definir um valor da entrada correspondente na estrutura de dados de localizações de borda 1005 para indicar que a borda existe (por exemplo, para um valor de “verdadeiro”).
[0555] A unidade de determinação de desblocagem 1004 determina, em geral, para dois blocos vizinhos, se uma borda entre os dois blocos deve ser desblocada. A unidade de determinação de desblocagem 1004 pode determinar localizações de bordas usando estrutura de dados de localizações de borda
1005. Quando um valor de estrutura de dados de localizações de borda 1005 tem um valor Booleano, a unidade de determinação de desblocagem 1004 pode determinar que um valor “verdadeiro” indica a presença de uma borda, e um valor “falso” indica que nenhuma borda está presente, em alguns exemplos.
[0556] Em geral, a unidade de determinação de desblocagem 1004 é configurada com uma ou mais funções de determinação de desblocagem. As funções podem incluir uma pluralidade de coeficientes aplicada a linhas de pixels que cruzam a borda entre os blocos. Por exemplo, as funções podem ser aplicadas a uma linha de pixels que é perpendicular à borda, em que alguns pixels estão em um dentre os dois blocos e alguns pixels estão no outro dentre os dois blocos. Definições de Suporte 1002 definem suporte para as funções. Em geral, o “suporte” corresponde aos pixels aos quais as funções são aplicadas.
[0557] A unidade de determinação de desblocagem 1004 pode ser configurada para aplicar uma ou mais funções de determinação de desblocagem a um ou mais conjuntos de suporte, conforme definido pelas definições de suporte 1002, para determinar se uma borda particular entre dois blocos de dados de vídeo deve ser desblocada. A linha tracejada que se origina da unidade de determinação de desblocagem 1004 representa dados para blocos sendo emitidos sem serem filtrados. Em casos em que a unidade de determinação de desblocagem 1004 determina que uma borda entre dois blocos não deve ser filtrada, o filtro de desblocagem 1000 pode emitir os dados para os blocos sem alterar os dados. Ou seja, os dados podem se desviar da unidade de filtragem de desblocagem 1006. Por outro lado, quando a unidade de determinação de desblocagem 1004 determina que uma borda deve ser desblocada, a unidade de determinação de desblocagem 1004 pode fazer com que a unidade de filtragem de desblocagem 1006 filtre valores para pixels próximo à borda a fim de desblocar a borda.
[0558] A unidade de filtragem de desblocagem 1006 recupera definições de filtros de desblocagem de parâmetros de filtro de desblocagem 1008 para bordas a serem desblocadas, conforme indicado pela unidade de determinação de desblocagem 1004. Em geral, a filtragem de uma borda usa valores de pixels das adjacências de uma borda atual a ser desblocada. Portanto, tanto funções de decisão de desblocagem quanto filtros de desblocagem podem ter uma certa região de suporte em ambos os lados de uma borda. Aplicando-se um filtro de desblocagem a pixels nas adjacências de uma borda, a unidade de filtragem de desblocagem 1006 pode suavizar os valores dos pixels de modo que transições de alta frequência próximo à borda sejam atenuadas. Desse modo, aplicação de filtros de desblocagem a pixels próximos a uma borda pode reduzir artefatos de blocagem próximo à borda.
[0559] A Figura 16 é um diagrama de blocos que ilustra outro método de desblocagem exemplificativo de acordo com as técnicas descritas nesta revelação (mais detalhes serão descritos abaixo, por exemplo, com base nas Figuras 9A a 9H, 10, 12, 13 e 17). O método de desblocagem 1600, para desblocar uma borda de bloco de croma (903, 913, 923, 933, 943, 953, 963, 973) entre um primeiro bloco de croma (901, 911, 921, 931, 941, 951, 961, 971) de um primeiro bloco de imagem (601, 601’) e um segundo bloco de croma (902, 912, 922, 932, 942, 952, 962, 972) de um segundo bloco de imagem (602, 602’), em uma codificação de imagem e/ou uma decodificação de imagem, em que o método de desblocagem 1600 compreende: - realizar 1601 um processo de decisão para a borda de bloco de croma, em que conforme mostrado na Figura 17, o processo de decisão compreende: - determinar 1611 um parâmetro de quantização de croma QpCp para o primeiro bloco de croma (901, 911, 921, 931, 941, 951, 961, 971) com base em um primeiro QP de luma (tal como QpYP) para um primeiro bloco de luma (801) do primeiro bloco de imagem (601, 601’) e uma ou mais tabelas de mapeamento de parâmetro de quantização (QP) de croma; - determinar 1621 um parâmetro de quantização de croma QpCq para o segundo bloco de croma (902, 912, 922, 932, 942, 952, 962, 972) com base em um segundo QP de luma (tal como QpYQ) para um segundo bloco de luma (802) do segundo bloco de imagem (602, 602’) e na uma ou mais tabelas de mapeamento de QP de croma; e - determinar 1631 um parâmetro de quantização de croma promediado e arredondado Qp C com base no parâmetro de quantização de croma QpCp para o primeiro bloco de croma (901, 911, 921, 931, 941, 951, 961, 971) e no parâmetro de quantização de croma QpCq para o segundo bloco de croma (902, 912, 922, 932, 942, 952, 962, 972); - determinar 1641 um parâmetro de limiar (tC) com base no parâmetro de quantização de croma promediado e arredondado (QpC) - realizar 1603 um processo de filtragem para a borda de bloco de croma (903, 913, 923) pelo menos com base no parâmetro de limiar (tC).
[0560] A Figura 11 é um diagrama de blocos que ilustra outro método de desblocagem exemplificativo de acordo com as técnicas descritas nesta revelação (mais detalhes serão descritos abaixo, por exemplo, com base nas Figuras 9, 10, 12 e 13).
[0561] Conforme ilustrado na Figura 11, na etapa 1101, é determinado se o tamanho dos blocos perpendiculares a e adjacentes a uma determinada borda na direção de desblocagem é >=8 amostras. Caso afirmativo, então, um processo de decisão para a borda de bloco de croma é realizado. O processo de decisão pode incluir a etapa 1103 e a etapa 1107. Os detalhes da etapa 1103 serão fornecidos posteriormente. Na etapa 1107, é determinado se um filtro longo (tal como um filtro tap mais longo) deve ser aplicado ou não, o filtro tap mais longo croma pode ser aplicado com base em decisões de filtro tap mais longo croma adicionais. Se o tamanho de bloco for <=8 amostras pelo menos para um dentre os blocos, então, o filtro fraco normal que modifica um máximo de ( 1 + 1) amostras é invocado com base no valor de intensidade de fronteira da respectiva borda (na etapa 1105). isto é, se a intensidade de fronteira (bS) da borda for >= 1, então, (1 + 1) filtro fraco é aplicado. Se o valor de bS for 0, então, filtro de desblocagem não é aplicado de modo algum para a determinada borda.
[0562] Se tamanho de bloco for >=8 amostras para blocos P e Q, então, o QP médio que é usado para determinar ou derivar os valores de t C e Beta é computado. tC e Beta são dois valores limiares que são derivados de suas respectivas tabelas e são indexados pelo valor de QP médio de ambos os blocos P e Q.
[0563] Os valores de tC e Beta são usados de modo adicional nas decisões de desblocagem que são descritas acima na seção 8.8.3.6.3 e também na seção 8.8.3.6.9 de JVET-O2001. Se todas as decisões forem avaliadas como verdadeiras, então, o filtro tap mais longo croma (3 + 3) é invocado. O tC é usado de modo adicional no processo de filtragem para uma amostra de croma que é descrito acima na seção 8.8.3.6.9 de JVET-O2001.
[0564] Visto que as decisões de desblocagem dependem dos valores limiares de tC e Beta e o processo de filtragem para uma amostra de croma depende dos valores limiares de tC, usando-se o método, o valor de QP de croma que é usado para os blocos que são codificados usando modo residual Cb-Cr em conjunto (JCCR) pode ser mapeado corretamente a partir de seu valor de QP de luma correspondente para alcançar decisões de desblocagem corretas alcançando, desse modo, melhor qualidade visual.
[0565] O técnico no assunto entenderá que os “blocos” (“unidades”) das várias figuras (método e aparelho) representam ou descrevem funcionalidades de modalidades da invenção (em vez de necessariamente “unidades” individuais em hardware ou software) e descrevem igualmente, desse modo, funções ou recursos de modalidades de aparelho bem como modalidades de método (unidade = etapa).
[0566] O conteúdo a seguir é uma explicação das aplicações do método de codificação bem como do método de decodificação, conforme mostrado nas modalidades mencionadas acima, e de um sistema que usa os mesmos.
[0567] A Figura 14 é um diagrama de blocos que mostra um sistema de fornecimento de conteúdo 3100 para realizar serviço de distribuição de conteúdo. Esse sistema de fornecimento de conteúdo 3100 inclui dispositivo de captura 3102, dispositivo terminal 3106 e inclui, opcionalmente, display 3126. O dispositivo de captura 3102 se comunica com o dispositivo terminal 3106 por meio de 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 sem limitação, WIFI, Ethernet, Cabo, sem fio (3G/4G/5G), USB ou qualquer tipo de combinação dos mesmos, ou similares.
[0568] O dispositivo de captura 3102 gera dados, e pode codificar os dados pelo método de codificação, conforme mostrado nas modalidades acima. De modo alternativo, o dispositivo de captura 3102 pode distribuir os dados a um servidor de transmissão contínua (não mostrado nas Figuras), e o servidor codifica os dados e transmite os dados codificados ao dispositivo terminal 3106. O dispositivo de captura 3102 inclui, mas sem limitação, 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 dos mesmos, ou similares. Por exemplo, o dispositivo de captura 3102 pode incluir o dispositivo de origem 12, conforme descrito acima. Quando os dados incluírem vídeo, o codificador de vídeo 20 incluído no dispositivo de captura 3102 pode, de fato, realizar processamento de codificação de vídeo. Quando os dados incluírem áudio (isto é, voz), um codificador de áudio incluído no dispositivo de captura 3102 pode, de fato, realizar processamento de codificação de áudio. Para alguns cenários práticos, o dispositivo de captura 3102 distribui os dados de áudio e vídeo codificados multiplexando-se os mesmos em conjunto. 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 ao dispositivo terminal 3106 separadamente.
[0569] 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 recepção e recuperação de dados, tal 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 de sinal (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 dos mesmos ou similares com a capacidade de decodificar os dados codificados mencionados acima. Por exemplo, o dispositivo terminal 3106 pode incluir o dispositivo de destino 14, conforme descrito acima. Quando os dados codificados incluírem vídeo, o decodificador de vídeo 30 incluído no dispositivo terminal é priorizado para realizar decodificação de vídeo. Quando os dados codificados incluírem áudio, um decodificador de áudio incluído no dispositivo terminal é priorizado para realizar processamento de decodificação de áudio.
[0570] Para um dispositivo terminal com seu display, 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 em seu display. Para um dispositivo terminal não equipado com display, por exemplo, STB 3116, sistema de videoconferência 3118 ou sistema de videovigilância 3120, um display externo 3126 é conectado ao mesmo para receber e mostrar os dados decodificados.
[0571] Quando cada dispositivo neste sistema realizar codificação ou decodificação, o dispositivo de codificação de imagem ou o dispositivo de decodificação de imagem, conforme mostrado nas modalidades mencionadas acima, pode ser usado.
[0572] A Figura 15 é 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 prosseguimento de protocolo 3202 analisa o protocolo de transmissão do fluxo. O protocolo inclui, mas sem limitação, Protocolo de Transmissão em Tempo Real (RTSP), Protocolo de Transferência de Hipertexto (HTTP), protocolo de transmissão ao vivo de HTTP (HLS), MPEG-DASH, protocolo de Transporte em Tempo Real (RTP), Protocolo de Envio de Mensagem em Tempo Real (RTMP) ou qualquer tipo de combinação dos mesmos ou similares.
[0573] Após a unidade de prosseguimento de protocolo 3202 processar o fluxo, o arquivo de fluxo é gerado. O arquivo é emitido 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 ao decodificador de vídeo 3206 e ao decodificador de áudio 3208 sem intermédio da unidade de demultiplexação 3204.
[0574] Por meio do processamento de demultiplexação, fluxo elementar de vídeo (ES), ES de áudio e, opcionalmente, legenda são gerados. O decodificador de vídeo 3206, que inclui o decodificador de vídeo 30, conforme explicado nas modalidades mencionadas acima, decodifica o ES de vídeo pelo método de decodificação, conforme mostrado nas modalidades mencionadas acima para gerar quadro de vídeo, e alimenta esses dados na unidade síncrona
3212. O decodificador de áudio 3208, decodifica o ES de áudio para gerar quadro de áudio, e alimenta esses dados na unidade síncrona 3212. De modo alternativo, o quadro de vídeo pode ser armazenado em um buffer (não mostrado na Figura Y) antes de ser alimentado à unidade síncrona 3212. De modo similar, o quadro de áudio pode ser armazenado em um buffer (não mostrado na Figura Y) antes de ser alimentado à unidade síncrona 3212.
[0575] A unidade síncrona 3212 sincroniza o quadro de vídeo e o quadro de áudio, e fornece o vídeo/áudio a um display 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 ser codificadas na sintaxe com o uso de carimbos de data e hora relacionados à apresentação de dados de áudio e visual codificados e carimbos de data e hora relacionados à entrega do fluxo de dados em si.
[0576] Se legenda estiver incluída no fluxo, o decodificador de legenda 3210 decodifica a legenda, e sincroniza a mesma com o quadro de vídeo e o quadro de áudio, e fornece o vídeo/áudio/legenda a um display de vídeo/áudio/legenda 3216.
[0577] A presente invenção não é limitada ao sistema mencionado acima, e o dispositivo de codificação de imagem ou o dispositivo de decodificação de imagem, nas modalidades mencionadas acima, pode ser incorporado em outro sistema, por exemplo, um sistema de carro.
[0578] Operadores Matemáticos
[0579] Os operadores matemáticos usados neste pedido são similares àqueles usados na linguagem de programação C. Entretanto, os resultados de divisão de número inteiro e operações de desvio aritméticas são definidos de maneira mais precisa, e operações adicionais são definidas, tais como exponenciação e divisão de valor real. As convenções de numeração e contagem começam, de modo geral, de 0, por exemplo, “o primeiro” é equivalente ao 0-ésimo, “o segundo” é equivalente ao 1-ésimo, etc.
[0580] Operadores aritméticos
[0581] Os seguintes operadores aritméticos são definidos da seguinte forma: + Adição Subtração (como um operador de dois argumentos) ou negação − (como um operador de prefixo unário) * Multiplicação, incluindo multiplicação de matriz Exponenciação. Especifica x para a potência de y. Em outros x contextos, tal notação é usada para sobrescrito não destinado para y interpretação como exponenciação. Divisão de número inteiro com truncamento do resultado para zero. Por / exemplo, 7 / 4 e −7 / −4 são truncados para 1 e −7 / 4 e 7 / −4 são truncados para −1. Usado para denotar divisão em equações matemáticas em que ÷ nenhum truncamento ou arredondamento é previsto. x Usado para denotar divisão em equações matemáticas em que y nenhum truncamento ou arredondamento é previsto. y A soma de f( i ) com i assumindo todos os valores de número inteiro ∑ f( i ) i=x de x até e incluindo y.
Módulo. Remanescente de x dividido por y, definido apenas para x números inteiros x e y com x >= 0 e y > 0. %y
[0582] Operadores lógicos
[0583] Os seguintes operadores lógicos são definidos da seguinte maneira: x && y Lógica booleana “e” de x e y x||y Lógica booleana “ou” de x e y ! Lógica booleana “não” x ? y : z Se x for VERDADEIRO ou não igual a 0, avalia para o valor de y; de outro modo, avalia para o valor de z.
[0584] Operadores relacionais
[0585] Os seguintes operadores relacionais são definidos da seguinte maneira: > Maior que >=Maior que ou igual a < Menor que <=Menor que ou igual a = = Igual a != Não igual a
[0586] Quando um operador relacional é aplicado a um elemento de sintaxe ou variável em que foi atribuído o valor “na” (não aplicável), o valor “na” é tratado como um valor distinto para o elemento de sintaxe ou variável. O valor “na” é considerado não ser igual a qualquer outro valor.
[0587] Operadores Bitwise
[0588] Os seguintes operadores bitwise são definidos da seguinte maneira: & Bitwise “e”. Ao operar em argumentos de número inteiro, opera em uma representação de complemento de dois do valor de número inteiro. Ao operar em um argumento binário que contém menos bits do que outro argumento, o argumento mais curto é estendido adicionando-se bits mais significativos iguais a 0. | Bitwise “ou”. Ao operar em argumentos de número inteiro, opera em uma representação de complemento de dois do valor de número inteiro. Ao operar em um argumento binário que contém menos bits do que outro argumento, o argumento mais curto é estendido adicionando-se bits mais significativos iguais a 0. ^ Bitwise “ou exclusivo”. Ao operar em argumentos de número inteiro, opera em uma representação de complemento de dois do valor de número inteiro. Ao operar em um argumento binário que contém menos bits do que outro argumento, o argumento mais curto é estendido adicionando-se bits mais significativos iguais a 0. x >> y Desvio para direita aritmético de uma representação de número inteiro de complemento de dois de dígitos binários x por y. Essa função é definida apenas para valores de número inteiro não negativos de y. Bits desviados para os bits mais significativos (MSBs) como resultado do desvio para direita têm um valor igual ao MSB de x antes da operação de desvio. x << y Desvio para esquerda aritmético de uma representação de número inteiro de complemento de dois de dígitos binários x por y. Essa função é definida apenas para valores de número inteiro não negativos de y. Bits desviados para os bits menos significativos (LSBs) como resultado do desvio para esquerda têm um valor igual a 0.
[0589] Operadores de atribuição
[0590] Os seguintes operadores aritméticos são definidos da seguinte forma: = Operador de atribuição ++ Incremento, isto é, x+ + é equivalente a x = x + 1; quando usado em um índice de arranjo, avalia para o valor da variável antes da operação de incremento. −− Decremento, isto é, x− − é equivalente a x = x − 1; quando usado em um índice de arranjo, avalia para o valor da variável antes da operação de decremento. +=Incremento por quantidade especificada, isto é, x += 3 é equivalente a x = x + 3, e x += (−3) é equivalente a x = x + (−3). −=Decremento por quantidade especificada, isto é, x −= 3 é equivalente a x = x − 3, e x −= (−3) é equivalente a x = x − (−3).
[0591] Notação de faixa
[0592] A seguinte notação é usada para especificar uma faixa de valores: x = y..zx assume valores de número inteiro iniciando a partir de y a z, inclusive, com x, y e z sendo números inteiros e z sendo maior do que y.
[0593] Funções matemáticas
[0594] As seguintes funções matemáticas são definidas: x ; x >= 0 Abs( x ) = { −x ; x<0 Asin( x )a função trigonométrica inversa de seno, que opera em um argumento x que está na faixa de −1,0 a 1,0, inclusive, com um valor de saída na faixa de −π÷2 a π÷2, inclusive, em unidades de radianos Atan( x )a função trigonométrica inversa de tangente, que opera em um argumento x, com um valor de saída na faixa de −π÷2 a π÷2, inclusive, em unidades de radianos y Atan ( x ) ; x>0 y Atan ( x ) + π ; x < 0 && y >= 0 Atan ( ) − π ; x < 0 && y < 0 y Atan2( y, x ) = x π +2 ; x = = 0 && y >= 0 −2 π ; de outro modo { Ceil( x ) o menor número inteiro maior do que ou igual a x. Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) − 1, x ) Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) − 1, x ) x ; z<x Clip3(x,y,z)={ y ; z>y z ; de outro modo Cos( x )a função trigonométrica de cosseno que opera em um argumento x em unidades de radianos. Floor( x ) o maior número inteiro menor do que ou igual a x. c+d ; b − a >= d / 2 GetCurrMsb( a, b, c, d ) = { c − d ; a−b>d / 2 c ; de outro modo Ln( x ) o logaritmo natural de x (o logaritmo de base-e, em que e é a constante de base de logaritmo natural 2.718 281 828...). Log2( x ) o logaritmo de base-2 de x.
Log10( x ) o logaritmo de base-10 de x.
x ; x <= y Min( x, y ) = { y ; x>y x ; x >= y Max( x, y ) = { y ; x<y Round( x ) = Sign( x ) * Floor( Abs( x ) + 0,5 )
1 ; x>0 Sign( x ) = { 0 ; x==0 −1 ; x<0 Sin( x )a função trigonométrica de seno que opera em um argumento x em unidades de radianos Sqrt( x ) = √x Swap( x, y ) = ( y, x ) Tan( x )a função de tangente trigonométrica que opera em um argumento x em unidades de radianos
[0595] Ordem de precedência de operação
[0596] Quando uma ordem de precedência em uma expressão não é indicada explicitamente pelo uso de parênteses, as seguintes regras se aplicam: – Operações de uma maior precedência são avaliadas antes de qualquer operação de uma menor precedência. – Operações da mesma precedência são avaliadas sequencialmente da esquerda para a direita.
[0597] A tabela abaixo especifica a precedência de operações do maior para o menor; uma posição mais alta na tabela indica uma maior precedência.
[0598] Para aqueles operadores que também são usados na linguagem de programação C, a ordem de precedência usada neste relatório descritivo é igual à usada na linguagem de programação C. Tabela: Precedência de operação do maior (no topo da tabela) para o menor (parte inferior da tabela) operações (com operandos x, y e z) “x++”, “x− −” “!x”, “−x” (como um operador de prefixo unário) xy x “x * y”, “x / y”, “x ÷ y”, “y”, “x % y” “x + y”, “x − y” (como um operador de dois argumentos), " y  f( i ) i=x " “x << y”, “x >> y”
“x < y”, “x <= y”, “x > y”, “x >= y” “x = = y”, “x != y” “x & y” “x | y” “x && y” “x | | y” “x ? y : z” “x..y” “x = y”, “x += y”, “x −= y”
[0599] Descrição de texto de operações lógicas
[0600] No texto, uma afirmação de operações lógicas, conforme será descrito matematicamente na seguinte forma: if( condition 0 ) statement 0 else if( condition 1 ) statement 1 ... else /* observação informativa sobre condição remanescente */ statement n pode ser descrita do seguinte modo: ... da seguinte maneira / ... o seguinte se aplica: – Se condição 0, afirmação 0 – De outro modo, se condição 1, afirmação 1 – ... – De outro modo (observação informativa sobre condição remanescente), afirmação n
[0601] Cada “se ... De outro modo, se ... De outro modo, ...” afirmação no texto é introduzida com “... do seguinte modo” ou “... o seguinte se aplica” imediatamente seguido por “Se ... ”. A última condição do “se ... De outro modo, se ... De outro modo, ...” é sempre um “De outro modo, ...”. Intercalado “Se ... De outro modo, se ... De outro modo, ...” afirmações podem ser identificadas por compatibilidade “... do seguinte modo” ou “... o seguinte se aplica” com o final “De outro modo, ...”.
[0602] No texto, uma afirmação de operações lógicas, conforme será descrito matematicamente na seguinte forma: if( condition 0a && condition 0b ) statement 0 else if( condition 1a | | condition 1b ) statement 1 ... else statement n pode ser descrita do seguinte modo: ... da seguinte maneira / ... o seguinte se aplica: – se todas as seguintes condições forem verdadeiras, afirmação 0: – condição 0a – condição 0b – De outro modo, se uma ou mais dentre as seguintes condições forem verdadeiras, afirmação 1: – condição 1a – condição 1b – ... – De outro modo, afirmação n
[0603] No texto, uma afirmação de operações lógicas, conforme será descrito matematicamente na seguinte forma: if( condition 0 ) statement 0 if( condition 1 ) statement 1 pode ser descrita do seguinte modo: Quando condição 0, afirmação 0 Quando condição 1, afirmação 1
[0604] Embora as modalidades da invenção tenham sido essencialmente descritas com base em codificação de vídeo, deve-se observar que as modalidades do sistema de codificação 10, codificador 20 e decodificador 30 (e, de modo correspondente, o sistema 10) e as outras modalidades descritas no presente documento também podem ser configuradas para processamento ou codificação de imagem estática, isto é, o processamento ou codificação de uma imagem individual independente de qualquer imagem precedente ou consecutiva como em codificação de vídeo. Em geral, apenas as unidades de predição inter 244 (codificador) e 344 (decodificador) podem não estar disponíveis em caso de a codificação de processamento de imagem estar limitada a uma única imagem 17. Todas as outras funcionalidades (também denominadas ferramentas ou tecnologias) do codificador de vídeo 20 e decodificador de vídeo 30 podem ser igualmente usadas para processamento de imagem estática, por exemplo, cálculo residual 204/304, transformada 206, quantização 208, quantização inversa 210/310, transformada (inversa) 212/312, particionamento 262/362, predição intra 254/354 e/ou filtragem loop 220, 320, e codificação de entropia 270 e decodificação de entropia 304.
[0605] As modalidades, por exemplo, do codificador 20 e do decodificador 30, e funções descritas no presente documento, por exemplo, com referência ao codificador 20 e ao decodificador 30, podem ser implantadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implantadas em software, as funções podem ser armazenadas em uma mídia legível por computador ou transmitidas por mídias de comunicação como uma ou mais instruções ou código e executadas por uma unidade de processamento com base em hardware. As mídias legíveis por computador podem incluir mídias de armazenamento legíveis por computador, que correspondem a uma mídia tangível, tal como mídias de armazenamento de dados, ou mídias de comunicação incluindo qualquer mídia que facilita a transferência de um programa de computador de um local para outro, por exemplo, de acordo com um protocolo de comunicação. Desse modo, as mídias legíveis por computador podem corresponder, de modo geral, a (1) mídias de armazenamento legíveis por computador tangíveis que não são transitórias ou (2) uma mídia de comunicação, tal como um sinal ou onda portadora. As mídias de armazenamento de dados podem ser quaisquer mídias disponíveis que podem ser acessadas por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implantação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0606] A título de exemplo, e não limitação, tais mídias de armazenamento legíveis por computador podem compreender 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 outra mídia que possa ser usada para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessada por um computador. Além disso, qualquer conexão é denominada, de maneira apropriada, uma mídia legível por computador. Por exemplo, se as instruções forem transmitidas a partir de um site da web, servidor ou outra fonte remota usando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas, então, o cabo coaxial, cabo de fibra óptica, par trançado, DSL ou tecnologias sem fio, tais como infravermelho, rádio e micro- ondas estão incluídos na definição de mídia. Deve-se entender, entretanto, que mídias de armazenamento legíveis por computador e mídias de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outras mídias transitórias, mas, em vez disso, se referem a mídias de armazenamento não transitórias, tangíveis. Disco magnético e disco óptico, conforme usado neste documento, incluem disco compacto (CD), disco a laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu-ray em que discos magnéticos normalmente reproduzem dados magneticamente, enquanto discos ópticos reproduzem dados opticamente com lasers. Combinações dos mesmos também devem estar incluídas no escopo de mídias legíveis por computador.
[0607] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinal digital (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASICs), arranjos lógicos programáveis em campo (FPGAs) ou outros circuitos lógicos discretos ou integrados equivalentes. Assim, o termo “processador”, conforme usado no presente documento, pode se referir a qualquer uma dentre a estrutura precedente ou qualquer outra estrutura adequada para implantação das técnicas descritas no presente documento. Além disso, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida dentro de 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 implantadas em um ou mais circuitos ou elementos lógicos.
[0608] As técnicas desta revelação podem ser implantadas em uma grande variedade de dispositivos ou aparelhos, incluindo um aparelho telefônico 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 revelação para enfatizar aspectos funcionais de dispositivos configurados para realizar as técnicas reveladas, mas não exigem, necessariamente, 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 adequado.

Claims (32)

REIVINDICAÇÕES
1. Método de desblocagem para desblocar uma borda de bloco de croma entre um primeiro bloco de croma de um primeiro bloco de imagem e um segundo bloco de croma de um segundo bloco de imagem em uma codificação de imagem ou em uma decodificação de imagem, CARACTERIZADO pelo fato de que compreende: realizar um processo de decisão para a borda de bloco de croma; e realizar um processo de filtragem para a borda de bloco de croma pelo menos com base em um parâmetro de limiar (tC) determinado no processo de decisão; em que o processo de decisão compreende: determinar um primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma com base em um primeiro parâmetro de quantização de luma (QpYP) de um primeiro bloco de luma do primeiro bloco de imagem e em uma tabela de mapeamento de parâmetro de quantização (QP) de croma para o primeiro bloco de croma; determinar um segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma com base em um segundo parâmetro de quantização de luma (QpYQ) de um segundo bloco de luma do segundo bloco de imagem e em uma tabela de mapeamento de QP de croma para o segundo bloco de croma; determinar um terceiro parâmetro de quantização de croma (QpC) com base no primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma e no segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma; e determinar o parâmetro de limiar (tC) com base no terceiro parâmetro de quantização de croma (QpC).
2. Método de desblocagem, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que pelo menos um dentre o primeiro bloco de croma e o segundo bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR).
3. Método de desblocagem, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o primeiro bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR) do primeiro bloco de imagem, e o segundo bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR) do segundo bloco de imagem; em que o primeiro bloco de croma é um bloco codificado residual Cb- Cr em conjunto (JCCR) do primeiro bloco de imagem, e o segundo bloco de croma é um primeiro componente croma do segundo bloco de imagem; em que o primeiro bloco de croma é um bloco codificado residual Cb- Cr em conjunto (JCCR) do primeiro bloco de imagem, e o segundo bloco de croma é um segundo componente croma do segundo bloco de imagem; em que o primeiro bloco de croma é um primeiro componente croma do primeiro bloco de imagem, e o segundo bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR) do segundo bloco de imagem; em que o primeiro bloco de croma é um segundo componente croma do primeiro bloco de imagem, e o segundo bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR) do segundo bloco de imagem; em que o primeiro bloco de croma é um primeiro componente croma do primeiro bloco de imagem, e o segundo bloco de croma é um primeiro componente croma do segundo bloco de imagem; ou em que o primeiro bloco de croma é um segundo componente croma do primeiro bloco de imagem, e o segundo bloco de croma é um segundo componente croma do segundo bloco de imagem.
4. Método de desblocagem, de acordo com qualquer uma das reivindicações 1 a 3, CARACTERIZADO pelo fato de que a tabela de mapeamento de parâmetro de quantização (QP) de croma para o primeiro bloco de croma ou o segundo bloco de croma compreende pelo menos um dentre: uma primeira tabela de mapeamento de QP de croma para um bloco codificado Cb-Cr em conjunto uma segunda tabela de mapeamento de QP de croma para um primeiro componente croma, ou uma terceira tabela de mapeamento de QP de croma para um segundo componente croma.
5. Método de desblocagem, de acordo com a reivindicação 4, CARACTERIZADO pelo fato de que a primeira tabela de mapeamento de QP de croma, a segunda tabela de mapeamento de QP de croma e a terceira tabela de mapeamento de QP de croma são indicadas ou indexadas por um primeiro valor de índice, um segundo valor de índice e um terceiro valor de índice, respectivamente.
6. Método de desblocagem, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que o primeiro valor de índice é 3, o segundo valor de índice é 1 e o terceiro índice é 2; ou em que o primeiro valor de índice é 2, o segundo valor de índice é 0 e o terceiro índice é 1.
7. Método de desblocagem, de acordo com qualquer uma das reivindicações 4 a 6, CARACTERIZADO pelo fato de que se o primeiro bloco de croma for um bloco codificado residual Cb-Cr em conjunto (JCCR) do primeiro bloco de imagem, o primeiro parâmetro de quantização de croma (QpCp) é derivado com base em um valor de QP de croma que corresponde a um valor restrito do primeiro parâmetro de quantização de luma (QpYP) na primeira tabela de mapeamento de QP de croma; se o primeiro bloco de croma for um primeiro componente croma do primeiro bloco de imagem, o primeiro parâmetro de quantização de croma (QpCp) é derivado com base em um valor de QP de croma que corresponde a um valor restrito do primeiro parâmetro de quantização de luma (QpYP) na segunda tabela de mapeamento de QP de croma; ou se o primeiro bloco de croma for um segundo componente croma do primeiro bloco de imagem, o primeiro parâmetro de quantização de croma (QpCp) é derivado com base em um valor de QP de croma que corresponde a um valor restrito do primeiro parâmetro de quantização de luma (QpYP) na terceira tabela de mapeamento de QP de croma.
8. Método de desblocagem, de acordo com qualquer uma das reivindicações 4 a 6, CARACTERIZADO pelo fato de que se o segundo bloco de croma for um bloco codificado residual Cb-Cr em conjunto (JCCR) do segundo bloco de imagem, o segundo parâmetro de quantização de croma (QpCq) é derivado com base em um valor de QP de croma que corresponde a um valor restrito do segundo parâmetro de quantização de luma (QpYQ) na primeira tabela de mapeamento de QP de croma; se o segundo bloco de croma for um primeiro componente croma do segundo bloco de imagem, o segundo parâmetro de quantização de croma (QpCq) é derivado com base em um valor de QP de croma que corresponde a um valor restrito do segundo parâmetro de quantização de luma (QpYQ) na segunda tabela de mapeamento de QP de croma; ou se o segundo bloco de croma for um segundo componente croma do segundo bloco de imagem, o segundo parâmetro de quantização de croma (QpCq) é derivado com base em um valor de QP de croma que corresponde a um valor restrito do segundo parâmetro de quantização de luma (QpYQ) na terceira tabela de mapeamento de QP de croma.
9. Método de desblocagem, de acordo com qualquer uma das reivindicações 1 a 6, CARACTERIZADO pelo fato de que a determinação de um primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma com base em um primeiro parâmetro de quantização de luma (QpYP) de um primeiro bloco de luma do primeiro bloco de imagem e em uma tabela de mapeamento de parâmetro de quantização (QP) de croma para o primeiro bloco de croma compreende: obter um valor de QP restrito (qPiChroma) com base no primeiro parâmetro de quantização de luma (QpYP) do primeiro bloco de luma; determinar um valor de QP de croma (qPiCb, qPiCr, qPiCbCr) para o primeiro bloco de croma com base no valor de QP restrito (qPiChroma) usando-se a tabela de mapeamento de QP de croma para o primeiro bloco de croma; e determinar o primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma com base em um valor restrito do valor de QP de croma (qPiCb, qPiCr, qPiCbCr).
10. Método de desblocagem, de acordo com qualquer uma das reivindicações 1 a 6, CARACTERIZADO pelo fato de que a determinação de um segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma com base em um segundo parâmetro de quantização de luma (QpYQ) de um segundo bloco de luma do segundo bloco de imagem e na tabela de mapeamento de QP de croma para o segundo bloco de croma compreende: obter um valor de QP restrito (qPiChroma) com base no segundo parâmetro de quantização de luma (QpYQ) do segundo bloco de luma; determinar um valor de QP de croma (qPiCb, qPiCr, qPiCbCr) para o segundo bloco de croma com base no valor de QP restrito (qPiChroma) usando-se a tabela de mapeamento de QP de croma para o segundo bloco de croma; e determinar o segundo parâmetro de quantização de croma (QpCq)
para o segundo bloco de croma com base em um valor restrito do valor de QP de croma (qPiCb, qPiCr, qPiCbCr).
11. Método de desblocagem, de acordo com qualquer uma das reivindicações 1 a 6, CARACTERIZADO pelo fato de que determinar o terceiro parâmetro de quantização de croma (QpC) com base no primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma e no segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma, compreende: determinar o terceiro parâmetro de quantização de croma (QpC) de acordo com a seguinte equação: QpC = ( QpQ + QpP + 1 ) >> 1 em que QpP se baseia no primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma e QpQ se baseia no segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma.
12. Método de desblocagem, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que QpP é obtido subtraindo-se um valor de deslocamento (QpBdOffset) do primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma; e em que QpQ é obtido subtraindo-se o valor de deslocamento (QpBdOffset) do segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma.
13. Método de desblocagem, de acordo com qualquer uma das reivindicações precedentes, CARACTERIZADO pelo fato de que o bloco codificado Cb-Cr em conjunto é codificado usando um modo JCCR e o modo JCCR é um segundo modo de um conjunto de modos JCCR disponíveis.
14. Método de desblocagem, de acordo com qualquer uma das reivindicações precedentes, CARACTERIZADO pelo fato de que o primeiro bloco de imagem e o segundo bloco de imagem são blocos de transformada ou o primeiro bloco de imagem e o segundo bloco de imagem são blocos de codificação.
15. Aparelho de filtro de desblocagem para uso em um codificador de imagem ou em um decodificador de imagem, para desblocar uma borda de bloco de croma entre um primeiro bloco de croma de um primeiro bloco de imagem e um segundo bloco de croma de um segundo bloco de imagem, CARACTERIZADO pelo fato de que o aparelho de filtro de desblocagem é configurado para: realizar um processo de decisão para a borda de bloco de croma, e realizar um processo de filtragem para a borda de bloco de croma pelo menos com base em um parâmetro de limiar determinado no processo de decisão; em que o processo de decisão compreende: determinar um primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma com base em um primeiro parâmetro de quantização de luma (QpYP) de um primeiro bloco de luma do primeiro bloco de imagem e em uma tabela de mapeamento de parâmetro de quantização de croma (QP) para o primeiro bloco de croma; determinar um segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma com base em um segundo parâmetro de quantização de luma (QpYQ) de um segundo bloco de luma do segundo bloco de imagem e em uma tabela de mapeamento de QP de croma para o segundo bloco de croma; determinar um terceiro parâmetro de quantização de croma (QpC) com base no primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma e no segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma; e determinar o parâmetro de limiar (tC) com base no terceiro parâmetro de quantização de croma (QpC).
16. Aparelho, de acordo com a reivindicação 15, CARACTERIZADO pelo fato de que pelo menos um dentre o primeiro bloco de croma e o segundo bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR).
17. Aparelho, de acordo com a reivindicação 15, CARACTERIZADO pelo fato de que o primeiro bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR) do primeiro bloco de imagem, e o segundo bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR) do segundo bloco de imagem; em que o primeiro bloco de croma é um bloco codificado residual Cb- Cr em conjunto (JCCR) do primeiro bloco de imagem, e o segundo bloco de croma é um primeiro componente croma do segundo bloco de imagem; em que o primeiro bloco de croma é um bloco codificado residual Cb- Cr em conjunto (JCCR) do primeiro bloco de imagem, e o segundo bloco de croma é um segundo componente croma do segundo bloco de imagem; em que o primeiro bloco de croma é um primeiro componente croma do primeiro bloco de imagem, e o segundo bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR) do segundo bloco de imagem; em que o primeiro bloco de croma é um segundo componente croma do primeiro bloco de imagem, e o segundo bloco de croma é um bloco codificado residual Cb-Cr em conjunto (JCCR) do segundo bloco de imagem; em que o primeiro bloco de croma é um primeiro componente croma do primeiro bloco de imagem, e o segundo bloco de croma é um primeiro componente croma do segundo bloco de imagem; ou em que o primeiro bloco de croma é um segundo componente croma do primeiro bloco de imagem, e o segundo bloco de croma é um segundo componente croma do segundo bloco de imagem.
18. Aparelho, de acordo com qualquer uma das reivindicações 15 a 17, CARACTERIZADO pelo fato de que a tabela de mapeamento de parâmetro de quantização (QP) de croma para o primeiro bloco de croma ou o segundo bloco de croma compreende pelo menos um dentre: uma primeira tabela de mapeamento de QP de croma para um bloco codificado Cb-Cr em conjunto uma segunda tabela de mapeamento de QP de croma para um primeiro componente croma, ou uma terceira tabela de mapeamento de QP de croma para um segundo componente croma.
19. Aparelho, de acordo com a reivindicação 18, CARACTERIZADO pelo fato de que a primeira tabela de mapeamento de QP de croma, a segunda tabela de mapeamento de QP de croma e a terceira tabela de mapeamento de QP de croma são indicadas ou indexadas por um primeiro valor de índice, um segundo valor de índice e um terceiro valor de índice, respectivamente.
20. Aparelho, de acordo com a reivindicação 19, CARACTERIZADO pelo fato de que o primeiro valor de índice é 3, o segundo valor de índice é 1 e o terceiro índice é 2; ou em que o primeiro valor de índice é 2, o segundo valor de índice é 0 e o terceiro índice é 1.
21. Aparelho, de acordo com qualquer uma das reivindicações 18 a 20, CARACTERIZADO pelo fato de que se o primeiro bloco de croma for um bloco codificado residual Cb-Cr em conjunto (JCCR) do primeiro bloco de imagem, o primeiro parâmetro de quantização de croma (QpCp) é derivado com base em um valor de QP de croma que corresponde a um valor restrito do primeiro parâmetro de quantização de luma (QpYP) na primeira tabela de mapeamento de QP de croma; se o primeiro bloco de croma for um primeiro componente croma do primeiro bloco de imagem, o primeiro parâmetro de quantização de croma (QpCp) é derivado com base em um valor de QP de croma que corresponde a um valor restrito do primeiro parâmetro de quantização de luma (QpYP) na segunda tabela de mapeamento de QP de croma; ou se o primeiro bloco de croma for um segundo componente croma do primeiro bloco de imagem, o primeiro parâmetro de quantização de croma (QpCp) é derivado com base em um valor de QP de croma que corresponde a um valor restrito do primeiro parâmetro de quantização de luma (QpYP) na terceira tabela de mapeamento de QP de croma.
22. Aparelho, de acordo com qualquer uma das reivindicações 18 a 20, CARACTERIZADO pelo fato de que se o segundo bloco de croma for um bloco codificado residual Cb-Cr em conjunto (JCCR) do segundo bloco de imagem, o segundo parâmetro de quantização de croma (QpCq) é derivado com base em um valor de QP de croma que corresponde a um valor restrito do segundo parâmetro de quantização de luma (QpYQ) na primeira tabela de mapeamento de QP de croma; se o segundo bloco de croma for um primeiro componente croma do segundo bloco de imagem, o segundo parâmetro de quantização de croma (QpCq) é derivado com base em um valor de QP de croma que corresponde a um valor restrito do segundo parâmetro de quantização de luma (QpYQ) na segunda tabela de mapeamento de QP de croma; ou se o segundo bloco de croma for um segundo componente croma do segundo bloco de imagem, o segundo parâmetro de quantização de croma
(QpCq) é derivado com base em um valor de QP de croma que corresponde a um valor restrito do segundo parâmetro de quantização de luma (QpYQ) na terceira tabela de mapeamento de QP de croma.
23. Aparelho, de acordo com qualquer uma das reivindicações 15 a 20, CARACTERIZADO pelo fato de que a determinação de um primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma com base em um primeiro parâmetro de quantização de luma (QpYP) de um primeiro bloco de luma do primeiro bloco de imagem e em uma tabela de mapeamento de parâmetro de quantização (QP) de croma para o primeiro bloco de croma, compreende: obter um valor de QP restrito (qPiChroma) com base no primeiro parâmetro de quantização de luma (QpYP) do primeiro bloco de luma; determinar um valor de QP de croma (qPiCb, qPiCr, qPiCbCr) para o primeiro bloco de croma com base no valor de QP restrito (qPiChroma) usando-se a tabela de mapeamento de QP de croma para o primeiro bloco de croma; e determinar o primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma com base em um valor restrito do valor de QP de croma (qPiCb, qPiCr, qPiCbCr).
24. Aparelho, de acordo com qualquer uma das reivindicações 15 a 20, CARACTERIZADO pelo fato de que a determinação de um segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma com base em um segundo parâmetro de quantização de luma (QpYQ) de um segundo bloco de luma do segundo bloco de imagem e na tabela de mapeamento de QP de croma para o segundo bloco de croma, compreende: obter um valor de QP restrito (qPiChroma) com base no segundo parâmetro de quantização de luma (QpYQ) do segundo bloco de luma; determinar um valor de QP de croma (qPiCb, qPiCr, qPiCbCr) para o segundo bloco de croma com base no valor de QP restrito (qPiChroma) usando-se a tabela de mapeamento de QP de croma para o segundo bloco de croma; e determinar o segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma com base em um valor restrito do valor de QP de croma (qPiCb, qPiCr, qPiCbCr).
25. Aparelho, de acordo com qualquer uma das reivindicações 15 a 20, CARACTERIZADO pelo fato de que determinar o terceiro parâmetro de quantização de croma (QpC) com base no primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma e no segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma, compreende: determinar o terceiro parâmetro de quantização de croma (QpC) de acordo com a seguinte equação: QpC = ( QpQ + QpP + 1 ) >> 1 em que QpP se baseia no primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma e QpQ se baseia no segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma.
26. Aparelho, de acordo com a reivindicação 25, CARACTERIZADO pelo fato de que QpP é obtido subtraindo-se um valor de deslocamento (QpBdOffset) do primeiro parâmetro de quantização de croma (QpCp) para o primeiro bloco de croma; e em que QpQ é obtido subtraindo-se o valor de deslocamento (QpBdOffset) do segundo parâmetro de quantização de croma (QpCq) para o segundo bloco de croma.
27. Aparelho, de acordo com qualquer uma das reivindicações precedentes, CARACTERIZADO pelo fato de que o bloco codificado Cb-Cr em conjunto é codificado usando um modo JCCR e o modo JCCR é um segundo modo de um conjunto de modos JCCR disponíveis.
28. Aparelho, de acordo com qualquer uma das reivindicações precedentes, CARACTERIZADO pelo fato de que o primeiro bloco de imagem e o segundo bloco de imagem são blocos de transformada ou o primeiro bloco de imagem e o segundo bloco de imagem são blocos de codificação.
29. Dispositivo, CARACTERIZADO pelo fato de que compreende um aparelho de filtro de desblocagem conforme definido em qualquer uma das reivindicações 1 a 14.
30. Dispositivo, CARACTERIZADO pelo fato de que compreende: um ou mais processadores; e uma mídia de armazenamento legível por computador não transitória acoplada aos processadores e que armazena programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o dispositivo para realizar o método conforme definido em qualquer uma das reivindicações 1 a 14.
31. Produto de programa de computador com instruções de programa, CARACTERIZADO pelo fato de que é para realizar o método conforme definido em qualquer uma das reivindicações 1 a 14 quando as instruções de programa rodam em um computador.
32. Mídia legível por computador não transitória, CARACTERIZADA pelo fato de que armazena instruções de computador que quando executadas por um ou mais processadores, fazem com que o um ou mais processadores realizem o método conforme definido em qualquer uma das reivindicações 1 a
14.
BR112021010416-0A 2019-08-23 2020-08-24 Codificador, decodificador e métodos correspondentes para realizar desblocagem de croma para blocos que usam codificação de croma em conjunto BR112021010416A2 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
EP2019072643 2019-08-23
EPPCT/EP2019/072643 2019-08-23
RUPCT/RU2019/000639 2019-09-16
RU2019000639 2019-09-16
EP2019077057 2019-10-07
EPPCT/EP2019/077057 2019-10-07
PCT/CN2020/110914 WO2021037004A1 (en) 2019-08-23 2020-08-24 An encoder, a decoder and corresponding methods for performing chroma deblocking for blocks which use joint chroma coding

Publications (1)

Publication Number Publication Date
BR112021010416A2 true BR112021010416A2 (pt) 2021-08-24

Family

ID=74684550

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021010416-0A BR112021010416A2 (pt) 2019-08-23 2020-08-24 Codificador, decodificador e métodos correspondentes para realizar desblocagem de croma para blocos que usam codificação de croma em conjunto

Country Status (12)

Country Link
US (3) US11317091B2 (pt)
EP (2) EP4344202A2 (pt)
JP (2) JP7343596B6 (pt)
KR (2) KR102628895B1 (pt)
CN (2) CN113711603A (pt)
AU (2) AU2020335790B2 (pt)
BR (1) BR112021010416A2 (pt)
CA (1) CA3152228A1 (pt)
IL (1) IL290832A (pt)
MX (1) MX2021008260A (pt)
WO (1) WO2021037004A1 (pt)
ZA (1) ZA202203156B (pt)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200073124A (ko) * 2018-12-13 2020-06-23 에스케이텔레콤 주식회사 필터링 방법 및 영상 복호화 장치
CN114009024B (zh) 2019-06-21 2024-04-02 北京字节跳动网络技术有限公司 视频编解码中自适应环内颜色空间变换的选择性启用
CN113711603A (zh) 2019-08-23 2021-11-26 华为技术有限公司 对使用联合色度译码的块执行色度去块效应滤波的编码器、解码器及对应方法
WO2021040907A1 (en) * 2019-08-30 2021-03-04 Alibaba Group Holding Limited Method and system for signaling chroma quantization parameter table
AU2020354852A1 (en) * 2019-09-23 2022-07-21 Huawei Technologies Co., Ltd. Method and apparatus for chrominance quantization parameters signalling
US20220353505A1 (en) * 2019-09-27 2022-11-03 Sk Telecom Co., Ltd. Method for reconstructing residual blocks of chroma blocks, and video decoding apparatus
CN114651442A (zh) 2019-10-09 2022-06-21 字节跳动有限公司 视频编解码中的跨分量适应性回路滤波
EP4029273A4 (en) 2019-10-14 2023-03-15 ByteDance Inc. USE OF CHROMA QUANTIZATION PARAMETERS IN VIDEO ENCODING
US11399195B2 (en) * 2019-10-30 2022-07-26 Tencent America LLC Range of minimum coding block size in video coding
CN115152219A (zh) * 2019-11-07 2022-10-04 抖音视界有限公司 视频编解码的自适应环内颜色空间变换的量化特性
CA3225288A1 (en) * 2019-11-22 2021-05-27 Lg Electronics Inc. Image encoding/decoding method and device using lossless color transform, and method for transmitting bitstream
WO2021118977A1 (en) 2019-12-09 2021-06-17 Bytedance Inc. Using quantization groups in video coding
WO2021138293A1 (en) 2019-12-31 2021-07-08 Bytedance Inc. Adaptive color transform in video coding
JP7343702B2 (ja) * 2020-06-10 2023-09-12 日本放送協会 デブロッキングフィルタ装置、復号装置、及びプログラム
US11876970B2 (en) * 2021-07-22 2024-01-16 Tencent America LLC Non-interleaved separate tree

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NO20042477A (no) * 2004-06-14 2005-10-17 Tandberg Telecom As Fremgangsmåte for chroma de-blokking
US9363509B2 (en) * 2011-03-03 2016-06-07 Electronics And Telecommunications Research Institute Method for determining color difference component quantization parameter and device using the method
US9025675B2 (en) * 2011-06-22 2015-05-05 Texas Instruments Incorporated Systems and methods for reducing blocking artifacts
US9167269B2 (en) * 2011-10-25 2015-10-20 Qualcomm Incorporated Determining boundary strength values for deblocking filtering for video coding
KR102350071B1 (ko) * 2011-11-04 2022-01-11 엘지전자 주식회사 영상 정보 인코딩/디코딩 방법 및 장치
US9451258B2 (en) * 2012-04-03 2016-09-20 Qualcomm Incorporated Chroma slice-level QP offset and deblocking
US9414054B2 (en) * 2012-07-02 2016-08-09 Microsoft Technology Licensing, Llc Control and use of chroma quantization parameter values
US9591302B2 (en) * 2012-07-02 2017-03-07 Microsoft Technology Licensing, Llc Use of chroma quantization parameter offsets in deblocking
US9648332B2 (en) * 2013-10-28 2017-05-09 Qualcomm Incorporated Adaptive inter-color component residual prediction
US9661329B2 (en) * 2014-04-30 2017-05-23 Intel Corporation Constant quality video coding
US10038919B2 (en) * 2014-05-29 2018-07-31 Apple Inc. In loop chroma deblocking filter
US10142642B2 (en) * 2014-06-04 2018-11-27 Qualcomm Incorporated Block adaptive color-space conversion coding
US20150373327A1 (en) * 2014-06-20 2015-12-24 Qualcomm Incorporated Block adaptive color-space conversion coding
US9998742B2 (en) * 2015-01-27 2018-06-12 Qualcomm Incorporated Adaptive cross component residual prediction
CN107852512A (zh) * 2015-06-07 2018-03-27 夏普株式会社 基于亮度转换函数或视频色彩分量值的优化视频编码的系统及方法
EP3314892A4 (en) * 2015-06-26 2018-08-22 Telefonaktiebolaget LM Ericsson (publ) Encoding and decoding of pictures in a video
WO2017093189A1 (en) * 2015-11-30 2017-06-08 Telefonaktiebolaget Lm Ericsson (Publ) Encoding of pictures in a video
EP3220642B1 (en) * 2016-03-15 2018-03-07 Axis AB Method, apparatus and system for encoding a video stream by defining areas within a second image frame with image data common to a first image frame
EP3244617A1 (en) * 2016-05-13 2017-11-15 Thomson Licensing A method and device for deblocking filtering a boundary within an intra predicted block
US10200698B2 (en) * 2016-08-09 2019-02-05 Intel Corporation Determining chroma quantization parameters for video coding
CN109891895A (zh) * 2016-08-21 2019-06-14 Lg电子株式会社 图像编码/解码方法及其装置
US10477212B2 (en) * 2016-10-11 2019-11-12 Dolby Laboratories Licensing Corporation Adaptive chroma quantization in video coding for multiple color imaging formats
US11095896B2 (en) * 2017-10-12 2021-08-17 Qualcomm Incorporated Video coding with content adaptive spatially varying quantization
WO2019121164A1 (en) * 2017-12-18 2019-06-27 Telefonaktiebolaget Lm Ericsson (Publ) De-blocking for video coding
WO2019240493A1 (ko) * 2018-06-12 2019-12-19 한국전자통신연구원 문맥 적응적 이진 산술 부호화 방법 및 장치
MX2020013802A (es) * 2018-06-25 2021-05-27 Electronics & Telecommunications Res Inst Metodo y aparato para codificar/decodificar imagenes usando parametros de cuantificacion, y medio de grabacion que almacena flujo de bits.
CN109889853A (zh) * 2019-02-26 2019-06-14 北京大学深圳研究生院 一种去块效应滤波方法、系统、设备及计算机可读介质
US11451826B2 (en) * 2019-04-15 2022-09-20 Tencent America LLC Lossless coding mode and switchable residual coding
CN113711603A (zh) 2019-08-23 2021-11-26 华为技术有限公司 对使用联合色度译码的块执行色度去块效应滤波的编码器、解码器及对应方法
EP3881530A4 (en) * 2019-08-23 2022-09-28 Tencent America LLC VIDEO CODING METHOD AND APPARATUS
EP4029273A4 (en) * 2019-10-14 2023-03-15 ByteDance Inc. USE OF CHROMA QUANTIZATION PARAMETERS IN VIDEO ENCODING

Also Published As

Publication number Publication date
JP2022519546A (ja) 2022-03-24
AU2020335790A1 (en) 2022-03-31
CN113711603A (zh) 2021-11-26
KR102628895B1 (ko) 2024-01-23
US11736695B2 (en) 2023-08-22
EP3868101A1 (en) 2021-08-25
WO2021037004A1 (en) 2021-03-04
US20240015290A1 (en) 2024-01-11
ZA202203156B (en) 2022-11-30
AU2023216876A1 (en) 2023-09-07
JP2023166488A (ja) 2023-11-21
IL290832A (en) 2022-04-01
AU2020335790B2 (en) 2023-05-18
US11317091B2 (en) 2022-04-26
CN113810690B (zh) 2022-04-29
US20210266552A1 (en) 2021-08-26
CA3152228A1 (en) 2021-03-04
EP4344202A2 (en) 2024-03-27
JP7343596B2 (ja) 2023-09-12
EP3868101B1 (en) 2024-04-10
KR20240015149A (ko) 2024-02-02
KR20210088709A (ko) 2021-07-14
JP7343596B6 (ja) 2024-02-26
MX2021008260A (es) 2021-08-16
EP3868101A4 (en) 2021-12-15
CN113810690A (zh) 2021-12-17
US20220191496A1 (en) 2022-06-16

Similar Documents

Publication Publication Date Title
BR112021010416A2 (pt) Codificador, decodificador e métodos correspondentes para realizar desblocagem de croma para blocos que usam codificação de croma em conjunto
BR112021009848A2 (pt) codificador, decodificador e métodos correspondentes para predição inter
KR20220116339A (ko) 루마 및 크로마 성분에 대한 ibc 전용 버퍼 및 디폴트 값 리프레싱을 사용하는 인코더, 디코더 및 대응하는 방법들
WO2020238706A9 (en) An encoder, a decoder and corresponding methods using for ibc merge list
BR112020026818A2 (pt) codificador, decodificador e métodos correspondentes de derivação de resistência de limite de filtro de desbloqueio
BR112021008016A2 (pt) codificador, decodificador e métodos correspondentes para modo de fusão
CN113545063A (zh) 使用线性模型进行帧内预测的方法及装置
BR112020025145A2 (pt) filtro de desbloqueio para fronteiras de subpartição causadas por ferramenta de codificação de subpartição intra
BR112021010286A2 (pt) codificador, decodificador e métodos correspondentes de construção de lista de modos mais prováveis para blocos com predição de múltiplas hipóteses
BR112021014502A2 (pt) Codificador, decodificador e métodos correspondentes de adaptação de filtro de desblocagem
BR112021011723A2 (pt) Método e aparelho de predição intra e codificador, decodificador, programa de computador, mídia de armazenamento não transitória, e fluxo de bits
KR20210088688A (ko) Ibc 병합 리스트를 사용하는 인코더, 디코더 및 대응하는 방법들
BR112021006909A2 (pt) aparelho e método para filtro de desblocagem em codificação de vídeo
CN115023953A (zh) 指示高级语法的编码器、解码器以及对应方法
BR122023021035A2 (pt) Método de compactação do vetor de movimento, meio de armazenamento legível por computador não transitório, codificador, decodificador e meio de armazenamento
CN116567207B (zh) 用于帧内预测的方法和装置
BR122022009445A2 (pt) Codificador, decodificador e métodos correspondentes para simplificar sinalização de cabeçalho de imagem
CN114830665B (zh) 仿射运动模型限制
CN115349257A (zh) 基于dct的内插滤波器的使用
CN114586362A (zh) 色度量化参数指示方法和装置
BR112021012708A2 (pt) Método e aparelho de modelagem linear de componente cruzado para predição intra
BR112021003946A2 (pt) codificador de vídeo, decodificador de vídeo e métodos correspondentes
BR112021002210A2 (pt) aparelho e método para realizar desblocagem
CN113228632B (zh) 用于局部亮度补偿的编码器、解码器、以及对应方法
CN114930840A (zh) 增强型插值滤波器的运动矢量范围的推导

Legal Events

Date Code Title Description
B154 Notification of filing of divisional application [chapter 15.50 patent gazette]

Free format text: O PEDIDO FOI DIVIDIDO NO BR122023012838-9 PROTOCOLO 870230055004 EM 26/06/2023 16:08.