BR112020000166A2 - aparelho para dividir uma porção de imagem melhorando a partição forçada de fronteira, codificador e decodificador compreendendo os mesmos e métodos correspondentes - Google Patents

aparelho para dividir uma porção de imagem melhorando a partição forçada de fronteira, codificador e decodificador compreendendo os mesmos e métodos correspondentes Download PDF

Info

Publication number
BR112020000166A2
BR112020000166A2 BR112020000166-0A BR112020000166A BR112020000166A2 BR 112020000166 A2 BR112020000166 A2 BR 112020000166A2 BR 112020000166 A BR112020000166 A BR 112020000166A BR 112020000166 A2 BR112020000166 A2 BR 112020000166A2
Authority
BR
Brazil
Prior art keywords
partitioning
image
division
border
units
Prior art date
Application number
BR112020000166-0A
Other languages
English (en)
Inventor
Han Gao
Zhijie ZHAO
Semih ESENLIK
Anand Meher KOTRA
Shan Liu
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 BR112020000166A2 publication Critical patent/BR112020000166A2/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/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree 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/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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • 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
    • 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/184Methods 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 bits, e.g. of the compressed video stream
    • 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/1883Methods 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 relating to sub-band structure, e.g. hierarchical level, directional tree, e.g. low-high [LH], high-low [HL], high-high [HH]
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Agricultural Chemicals And Associated Chemicals (AREA)
  • Paper (AREA)
  • Switch Cases, Indication, And Locking (AREA)
  • Farming Of Fish And Shellfish (AREA)

Abstract

A presente invenção refere-se ao particionamento de uma imagem ou uma fatia de imagem. Em particular, a imagem ou fatia de imagem é dividida em um número inteiro de unidades de árvore de codificação em ambas as direções vertical e horizontal. A porção de fronteira restante é então dividida pelo menos parcialmente forçada, de modo que o nível de particionamento mais profundo seja um resultado do particionamento binário, ou seja, inclui uma unidade de codificação que é mais longa de um lado de que do outro lado. O lado mais longo é paralelo ou concorrente à imagem ou à fronteira de fatia de imagem.

Description

APARELHO PARA DIVIDIR UMA PORÇÃO DE IMAGEM MELHORANDO A PARTIÇÃO FORÇADA DE FRONTEIRA, CODIFICADOR E DECODIFICADOR COMPREENDENDO OS MESMOS E MÉTODOS CORRESPONDENTES
[001] A presente divulgação refere-se à codificação e decodificação de imagem e/ou vídeo e, em particular, à divisão da imagem em unidades de codificação.
FUNDAMENTOS
[002] Os codecs de vídeo híbridos baseados em blocos atuais empregam codificação preditiva. Uma imagem de uma sequência de vídeo é subdividida em blocos de pixels e esses blocos são codificados. Em vez de codificar um bloco pixel por pixel, o bloco inteiro é previsto usando pixels já codificados na proximidade espacial ou temporal do bloco. O codificador adicionalmente processa apenas as diferenças entre o bloco e sua predição. O processamento adicional normalmente inclui uma transformação dos pixels de bloco em coeficientes em um domínio de transformação. Os coeficientes podem então ser adicionalmente comprimidos (por exemplo, por meio de quantificação) e adicionalmente compactados (por exemplo, por codificação de entropia) para formar um fluxo de bits. O fluxo de bits pode ainda incluir qualquer informação de sinalização que permita ao decodificador decodificar o vídeo codificado. Por exemplo, a sinalização pode incluir definições relativas às definições de codificador, como tamanho da imagem de entrada, taxa de quadros, indicação de passo de quantificação, predição aplicada aos blocos das imagens, ou semelhantes.
[003] As diferenças entre um bloco e sua predição são conhecidas como residuais do bloco. Mais especificamente, cada pixel do bloco tem um resíduo, que é a diferença entre um nível de intensidade desse pixel e seu nível de intensidade previsto. O nível de intensidade de um pixel é chamado de valor de pixel ou valor do pixel. Os resíduos de todos os pixels de um bloco são referidos coletivamente como o resíduo do bloco. Em outras palavras, o bloco possui um resíduo que é um conjunto ou matriz que consiste nos resíduos de todos os pixels de bloco. Os resíduos são então transformados, quantificados e codificados juntamente com informação de sinalização. A codificação pode incluir várias formas de codificação de comprimento fixo e variável, incluindo codificação aritmética ou outros tipos de codificação de entropia.
[004] Na codificação de vídeo híbrida baseada em bloco, cada imagem é particionada em blocos de amostras e múltiplos blocos dentro de uma imagem são agregados para formar fatias como entidades decodificáveis independentemente. Os blocos aos quais a predição e/ou transformação são aplicadas, são referidos como uma unidade de codificação (CU) ou bloco de codificação (CB). As unidades de codificação podem ter tamanhos diferentes.
[005] Por exemplo, na codificação de vídeo de alta eficiência (HEVC, também conhecida como H.265), um quadro de vídeo é subdividido em unidades de árvore de codificação (CTUs, também conhecidas como blocos de árvore de codificação, CTBs). Os CTBs são blocos quadrados separados do mesmo tamanho, por exemplo, amostras de 64 x 64. Cada CTB serve como raiz de uma estrutura de árvore quádrupla de particionamento de blocos, a árvore de codificação. Os CTBs podem ainda ser subdivididos ao longo da estrutura de árvore de codificação em blocos de codificação. Para os blocos de codificação, o tipo de predição é determinado. Os blocos de codificação podem ainda ser divididos em blocos de transformação menores aos quais a transformação e a quantificação são aplicadas.
[006] Detalhes sobre o particionamento no HEVC podem ser encontrados em V. Sze et al (Ed.), Codificação de Vídeo de Alta Eficiência (HEVC): Algoritmos e Arquiteturas, Springer, 2014, capítulo 3.2.
[007] Além disso, o documento WO 2016/090568 mostra uma estrutura de árvore binária para particionar uma unidade em múltiplas unidades menores usando a árvore quádrupla mais uma estrutura de árvore binária. Consequentemente, a unidade raiz é primeiramente particionada por uma estrutura de árvore quádrupla e, em seguida, o nó folha da árvore quádrupla é ainda particionado por uma estrutura de árvore binária.
SUMÁRIO
[008] No padrão HEVC, as CTUs e CUs localizadas nas fronteiras de fatia ou imagem serão divididas à força usando o particionamento de árvore quádrupla até que a amostra inferior direita do nó folha esteja localizada dentro da fronteira de fatia ou imagem. O particionamento de árvore quádrupla forçado não precisa ser sinalizado no fluxo de bits, desde que as regras de divisão sejam fixas (predefinidas). O objetivo do particionamento forçado é permitir que o codificador e o decodificador processem imagens e fatias com tamanho horizontal e/ou vertical que não sejam um múltiplo inteiro do respectivo tamanho horizontal e/ou vertical da CTU.
[009] Em HEVC, bem como no documento WO 2016/090568, o processo de particionamento forçado divide CTUs e CUs localizadas na fronteira de quadro hierarquicamente por abordagem de árvore quádrupla sem otimização de distorção de taxa (RC) até que toda a CU atual esteja dentro da fronteira de fatia ou imagem. Essas partições forçadas não precisam ser sinalizadas no fluxo de bits. No entanto, a divisão em unidades de codificação muito pequenas pode introduzir mais complexidade e requisitos de sinalização em conexão com o processamento adicional separado (codificação, decodificação) das unidades de codificação pequenas.
[0010] De acordo com a presente divulgação, o particionamento forçado aplica divisão de árvore binária pelo menos no nível de hierarquia de particionamento mais profundo ou pelo menos em um nível de particionamento diferente do nível de hierarquia de particionamento mais profundo no qual uma unidade de codificação permanece não totalmente dentro da porção de fronteira.
[0011] Essa divisão fornece maior eficiência, pois resulta em um número menor de unidades de codificação no nível de hierarquia mais profundo.
[0012] De acordo com um aspecto da invenção, é fornecido um aparelho para dividir uma porção de imagem em unidades de codificação incluindo um circuito de processamento que, em operação subdivide a porção de imagem em um número inteiro de unidades de árvore de codificação com um tamanho predeterminado e uma porção de fronteira com um tamanho menor que o tamanho predeterminado em pelo menos uma primeira direção que é ou direção horizontal ou vertical; e particiona a porção de fronteira hierarquicamente em unidades de codificação incluindo uma unidade de codificação mais profunda com tamanhos diferentes nas respectivas direções horizontal e vertical, a unidade de codificação mais profunda sendo menor na primeira direção.
[0013] Uma vantagem dessa abordagem é evitar muitas CUs pequenas na fronteira de imagem, o que também pode resultar em uma codificação mais eficiente da porção de fronteira.
[0014] De acordo com um exemplo, o circuito de processamento é configurado para particionar a porção de fronteira por divisão de árvore binária pelo menos no nível de particionamento mais profundo.
[0015] Além disso, ou alternativamente ao particionamento de árvore binária, o circuito de processamento pode ser configurado para particionar a porção de fronteira também por divisão de árvore quádrupla.
[0016] De acordo com um exemplo, o circuito de processamento, em operação, particiona a porção de fronteira por divisão de árvore quádrupla em N níveis mais rasos, N sendo um número inteiro maior que ou igual a zero e menor que o número de níveis de hierarquia de particionamento; e particiona a porção de fronteira por divisão de árvore binária nos níveis de hierarquia de particionamento restantes.
[0017] Essa abordagem fornece uma maior flexibilidade na configuração e ainda garante que a fronteira seja codificada com eficiência, evitando um grande número de pequenas CUs de fronteira quadrada.
[0018] Em uma implementação, o circuito de processamento, em operação, particiona a porção de fronteira até que a unidade de codificação de nível mais profundo permaneça inteiramente dentro da porção de fronteira.
[0019] Em uma implementação, o circuito de processamento, em operação, particiona a porção de fronteira por divisão de árvore binária na direção horizontal e na vertical.
[0020] Além disso ou alternativamente, o circuito de processamento, em operação, particiona em cada nível de hierarquia uma porção de canto da porção de fronteira por divisão de árvore quádrupla.
[0021] Alternativamente à mistura de divisão de árvore quádrupla e árvore binária para a CTU de porção de fronteira, o circuito de processamento pode ser configurado para particionar porção de fronteira em todos os níveis de particionamento por divisão de árvore binária.
[0022] De acordo com um aspecto da invenção, é fornecido um aparelho para codificar uma imagem de uma sequência de vídeo, o aparelho compreendendo o aparelho para dividir uma porção de imagem em unidades de codificação de acordo com qualquer um dos exemplos e implementações descritos acima; uma unidade de codificação de imagem configurada para codificar as unidades de codificação; e uma unidade de formação de fluxo de bits configurada para gerar um fluxo de bits incluindo as unidades de codificação codificadas e uma informação de particionamento indicando como as unidades de árvore de codificação são particionadas.
[0023] Por exemplo, o codificador compreende ainda uma unidade de otimização de distorção de taxa configurada para determinar o particionamento hierárquico da porção de fronteira de acordo com a otimização de distorção de taxa para qualquer um dos níveis de particionamento, exceto o nível mais profundo.
[0024] Outro aspecto da presente invenção inclui um aparelho para decodificar uma imagem de uma sequência de vídeo compreendendo: o aparelho para determinar a divisão de uma porção de imagem a ser decodificada em unidades de codificação de acordo com qualquer um dos exemplos e implementações descritos acima; um analisador de fluxo de bits para analisar um fluxo de bits incluindo as unidades de codificação codificadas e uma informação de particionamento indicando como as unidades de árvore de codificação são particionadas e baseada na divisão determinada da porção de imagem; e uma unidade de decodificação de imagem para decodificar as unidades de codificação codificadas.
[0025] De acordo com uma implementação exemplar, a divisão da porção de fronteira em unidades de codificação é uma divisão predefinida e a informação de particionamento não se relaciona à divisão da porção de fronteira.
[0026] O circuito de processamento do aparelho para decodificação e/ou aparelho para codificação pode ser configurado para particionar a porção de fronteira por divisão de árvore quádrupla em N níveis mais rasos, N sendo um número inteiro maior ou igual a zero e menor que o número de níveis de hierarquia de particionamento; e particionar porção de fronteira por divisão de árvore binária nos níveis de hierarquia de particionamento restantes. Além disso, em uma implementação exemplar, a informação de particionamento inclui N ou N é derivado com base no tipo de predição aplicado para codificar a imagem que está sendo processada. N pode ser derivado com base no tamanho de uma porção de fronteira com um tamanho menor que o tamanho predeterminado na direção horizontal ou vertical.
[0027] De acordo com um aspecto da presente invenção, é fornecido um método para dividir uma porção de imagem em unidades de codificação incluindo os passos de subdividir a porção de imagem em um número inteiro de unidades de árvore de codificação com um tamanho predeterminado e uma porção de fronteira com um tamanho menor que o tamanho predeterminado em pelo menos uma primeira direção, que é ou direção horizontal ou vertical, e particionar a porção de fronteira hierarquicamente em unidades de codificação incluindo uma unidade de codificação mais profunda com tamanhos diferentes nas respectivas direções horizontal e vertical, a unidade de codificação mais profunda sendo menor na primeira direção.
[0028] Em uma modalidade exemplar, a partição da porção de fronteira compreende ainda os passos de: começar com um nível de particionamento atual sendo o nível de particionamento mais raso; dividir sequencialmente a porção de fronteira em unidades de codificação do nível de particionamento atual, até que as unidades de codificação de fronteira do nível de particionamento atual caiam inteiramente dentro da porção de fronteira; e assim que a unidade de codificação do nível de particionamento atual não cair dentro da porção de fronteira, aumentar o nível de particionamento e adicionalmente particionar a referida unidade de codificação, em que uma particionamento de árvore quádrupla é usado para N níveis de particionamento mais rasos e o particionamento de árvore binária é usado de outro modo, N sendo um número inteiro maior ou igual a zero e menor que o número de níveis de hierarquia de particionamento.
[0029] De acordo com outro aspecto da presente invenção, é fornecido um método para codificar uma imagem de uma sequência de vídeo compreendendo os passos de dividir uma porção de imagem em unidades de codificação de acordo com qualquer um dos métodos especificados acima; codificar as unidades de codificação; e gerar um fluxo de bits incluindo as unidades de codificação codificadas e uma informação de particionamento indicando como as unidades de árvore de codificação são particionadas.
[0030] De acordo com outro aspecto da presente invenção, um método para decodificar uma imagem de uma sequência de vídeo compreende: determinar divisão de uma porção de imagem a ser decodificada em unidades de codificação de acordo com qualquer um dos métodos especificados acima; analisar um fluxo de bits incluindo as unidades de codificação codificadas e uma informação de particionamento indicando como as unidades de árvore de codificação são particionadas e baseada na divisão determinada da porção de imagem; e decodificar as unidades de codificação codificadas.
[0031] De acordo com um exemplo, o passo de particionamento particiona a porção de fronteira por divisão de árvore binária pelo menos no nível de particionamento mais profundo.
[0032] Além disso, ou alternativamente ao particionamento de árvore binária, o passo de particionamento pode particionar a porção de fronteira também por divisão de árvore quádrupla.
[0033] De acordo com um exemplo, o passo de particionamento particiona a porção de fronteira por divisão de árvore quádrupla em N níveis mais rasos, N sendo um número inteiro maior que ou igual a zero e menor que o número de níveis de hierarquia de particionamento; e particiona a porção de fronteira por divisão de árvore binária nos níveis de hierarquia de particionamento restantes.
[0034] Em uma implementação, o passo de particionamento particiona a porção de fronteira até que a unidade de codificação de nível mais profundo permaneça inteiramente dentro da porção de fronteira.
[0035] Em uma implementação, o circuito de processamento, em operação, particiona a porção de fronteira por divisão de árvore binária na direção horizontal e na vertical.
[0036] Além disso, ou alternativamente, o passo de processamento particiona em cada nível hierárquico uma porção de canto da porção de fronteira por divisão de árvore quádrupla.
[0037] Alternativamente à mistura de divisão de árvore quádrupla e árvore binária para a CTU de porção de fronteira, o passo de particionamento pode particionar a porção de fronteira em todos os níveis de particionamento por divisão de árvore binária.
[0038] De acordo com outro aspecto da presente invenção, é fornecido um meio legível por computador, armazenando instruções que, quando executadas por um processador, fazem com que o processador execute o método de acordo com qualquer um dos aspectos e exemplos acima.
BREVE DESCRIÇÃO DOS DESENHOS
[0039] No seguinte, modalidades exemplares são descritas em mais detalhes com referência às figuras e desenhos anexos, nos quais: A Figura 1 é um diagrama de blocos mostrando uma estrutura exemplar de um codificador de vídeo. A Figura 2 é um diagrama de blocos mostrando uma estrutura exemplar de um decodificador de vídeo. A Figura 3 é um desenho esquemático ilustrando um exemplo de particionamento de árvore quádrupla empregado por HEVC. A Figura 4 é um desenho esquemático ilustrando um exemplo de particionamento de árvore quádrupla/árvore binária. A Figura 5 é um desenho esquemático ilustrando a divisão de árvore quádrupla forçada de uma porção de fronteira. A Figura 6 é um diagrama de blocos ilustrando um exemplo de um aparelho que pode operar como unidade de divisão no codificador ou decodificador. A Figura 7 é um desenho esquemático ilustrando a divisão da porção de fronteira. A Figura 8 é um desenho esquemático mostrando exemplos de divisão de árvore binária forçada de uma fronteira vertical. A Figura 9 é um desenho esquemático ilustrando exemplos de particionamento na fronteira vertical, horizontal e combinada. A Figura 10 é um fluxograma mostrando decisões de sintaxe de particionamento exemplares.
DESCRIÇÃO DETALHADA DAS MODALIDADES
[0040] A presente invenção refere-se à divisão de uma imagem em unidades menores para processamento adicional. Essa divisão pode ser vantajosamente usada na codificação e decodificação de imagens estáticas ou de vídeo. A seguir, são descritos codificadores e decodificadores de vídeo exemplares, que podem implementar a divisão de acordo com a presente divulgação.
[0041] A Figura 1 mostra um codificador 100 que compreende uma entrada para receber blocos de entrada de quadros ou imagens de um fluxo de vídeo e uma saída para fornecer um fluxo de bits de vídeo codificado. O termo "quadro" nesta divulgação é usado como sinônimo de imagem. No entanto, note que a presente divulgação também é aplicável aos campos caso o entrelaçamento seja aplicado. Em geral, uma imagem inclui m vezes n pixels. Eles correspondem a amostras de imagens e cada uma pode compreender um ou mais componentes de cores. Por uma questão de simplicidade, a descrição a seguir se refere a pixels, significando amostras de luminância. No entanto, note que a abordagem de divisão da presente divulgação pode ser aplicada a qualquer componente de cor, incluindo crominância ou componentes de um espaço de cores como RGB ou semelhantes. Por outro lado, pode ser benéfico realizar a divisão para apenas um componente e aplicar a divisão determinada a mais (ou todos) componentes restantes.
[0042] O codificador 100 é configurado para aplicar particionamento, predição, transformação, quantificação e codificação de entropia ao fluxo de vídeo.
[0043] Em uma unidade de divisão 110, o quadro de vídeo de entrada é dividido adicionalmente antes da codificação. Os blocos a serem codificados não têm necessariamente o mesmo tamanho. Uma imagem pode incluir blocos de tamanhos diferentes e os rastreios de bloco de imagens diferentes da sequência de vídeo também podem ser diferentes. Em particular, cada imagem de vídeo (picture) é primeiro subdividida em CTUs do mesmo tamanho fixo. O tamanho de CTU pode ser fixo e predefinido, por exemplo, em um padrão. Em HEVC, tamanho de 64 x 64 é usado. No entanto, a presente divulgação não se limita a tamanhos padronizados e fixos. Pode ser vantajoso fornecer um tamanho de CTU que possa ser configurado no codificador e fornecido como um parâmetro de sinalização no fluxo de bits. Por exemplo, diferentes tamanhos de CTU podem ser benéficos para os respectivos tamanhos de imagem e/ou tipos de conteúdo. O tamanho de CTU pode ser sinalizado em qualquer nível de sinalização, por exemplo, pode ser comum para toda a sequência de vídeo ou para suas partes (ou seja, uma pluralidade de imagens) ou individual por imagem. Da mesma forma, pode ser sinalizado, por exemplo, dentro de um Conjunto de Parâmetros de Imagem, PPS ou dentro de um Conjunto de Parâmetros de Sequência, SPS ou dentro de um Conjunto de Parâmetros de Vídeo, VPS que são conhecidos dos codecs atuais (H.264/AVC, H.265/HEVC) ou conjuntos de parâmetros semelhantes. Alternativamente, pode ser especificado em um cabeçalho de fatia ou em qualquer outro nível. O tamanho de CTU pode assumir valores diferentes de 64 x 64. Por exemplo, pode ter 128 x 128 amostras de tamanho. Em geral, para realizar a divisão hierárquica por árvore de árvore binária quádrupla, pode ser benéfico fornecer um tamanho de CTU que é uma potência de dois, ou seja, no formato de 2^n com n sendo um número inteiro maior que 2.
[0044] O particionamento de imagens em CTUs e o particionamento de CTUs em CUs são mostrados na Figura 3 de V. Sze et al (Ed.), Codificação de Vídeo de Alta Eficiência (HEVC): Algoritmos e Arquiteturas, Springer, 2014. O particionamento segue uma estrutura de árvore quádrupla para se adaptar a várias características locais. No lado esquerdo,
a Figura 3 mostra uma CTU dividida hierarquicamente de acordo com a estrutura de árvore quádrupla no lado direito. Em particular, a árvore de codificação define a sintaxe, que especifica a subdivisão da CTU em CUs. Da mesma forma que uma CTU, uma CU consiste em um bloco quadrado de amostras e a sintaxe associada a esses blocos de amostras. Assim, o particionamento é realizado hierarquicamente, a partir da CTU (profundidade de hierarquia 0), que pode ser, mas não precisa ser subdividida em quatro CUs (em árvore quádrupla) de profundidade de hierarquia 1. Na Figura 3, a CTU é dividida nas CUs 8 e 16 da primeira profundidade (nível) de hierarquia, que não são mais divididas e, assim, formam folhas da árvore quádrupla, além de duas CUs adicionais, que são adicionalmente divididas em CUs da profundidade de hierarquia 2 (CU de profundidade-2). Em particular, a CU de profundidade-1 superior esquerda é adicionalmente subdividida em CUs de profundidade-2 1, 2, 7 formando folhas de árvore quádrupla e outra CU que é adicionalmente dividida em CUs de profundidade-3 3, 4, 5 e 6 que são todas folhas. Da mesma forma, a CU de profundidade-1 inferior esquerda é dividida em CUs de profundidades-2 13, 14 e 15, que também são folhas da árvore quádrupla e uma CU restante, que é adicionalmente dividida em CUs de nível-3 9, 10, 11 e 12 que são todas folhas e, portanto, não são adicionalmente divididas.
[0045] Uma sintaxe exemplar para a divisão de árvore quádrupla em HEVC é mostrada abaixo na Tabela 1.
coding_quadtree( x0, y0, log2CbSize, cqtDepth ) Descritor { if( x0 + ( 1 << log2CbSize ) <= pic_width_in_luma_samples && y0 + ( 1 << log2CbSize ) <= pic_height_in_luma_samples && log2CbSize > MinCbLog2SizeY ) split_cu_flag[ x0 ][ y0 ] ae(v) if( cu_qp_delta_enabled_flag && log2CbSize >= Log2MinCuQpDeltaSize ) { IsCuQpDeltaCoded = 0 CuQpDeltaVal = 0 } if( cu_chroma_qp_offset_enabled_flag && log2CbSize >= Log2MinCuChromaQpOffsetSize ) IsCuChromaQpOffsetCoded = 0 if( split_cu_flag[ x0 ][ y0 ] ) { x1 = x0 + ( 1 << ( log2CbSize − 1 ) ) y1 = y0 + ( 1 << ( log2CbSize − 1 ) ) coding_quadtree( x0, y0, log2CbSize − 1, cqtDepth + 1 ) if( x1 < pic_width_in_luma_samples ) coding_quadtree( x1, y0, log2CbSize − 1, cqtDepth + 1 ) if( y1 < pic_height_in_luma_samples ) coding_quadtree( x0, y1, log2CbSize − 1, cqtDepth + 1 ) if( x1 < pic_width_in_luma_samples && y1 < pic_height_in_luma_samples ) coding_quadtree( x1, y1, log2CbSize − 1, cqtDepth + 1 ) } else coding_unit( x0, y0, log2CbSize ) } Tabela 1: Sintaxe para sinalizadores de divisão de CTU
[0046] Em particular, no nível de CTU, um sinalizador denominado split_cu_flag é incluído no fluxo de bits, indicando se a CTU completa forma uma CU ou se está dividida em quatro blocos de tamanho igual correspondentes a blocos de amostra quadrados. Se a CTU estiver dividida, para cada um dos blocos resultantes, outro split_cu_flag será transmitido, especificando se o bloco representa uma CU ou se é adicionalmente dividido em quatro blocos de tamanho igual. Essa subdivisão hierárquica é continuada até que nenhum dos blocos resultantes seja subdividido. O tamanho de CU mínimos é sinalizado no conjunto de parâmetros de sequência, podendo variar de 8 x 8 amostras de luma ao tamanho da CTU, inclusive. Quando o tamanho de CU mínimo é atingido no processo de subdivisão hierárquica, nenhum sinal de divisão é transmitido para os blocos correspondentes; em vez disso, infere-se que esses blocos não são adicionalmente divididos. Nas configurações típicas do codificador HEVC, o intervalo máximo de tamanhos de CUs suportados é explorado para que as CUs de 8 x 8 a 64 x 64 amostras possam ser usadas. As CUs dentro de uma CTU são codificadas em uma ordem de profundidade. Essa ordem de codificação também é conhecida como varredura z. Ela garante que, para cada CU, exceto aquelas localizadas na fronteira superior ou esquerda de uma fatia, todas as amostras acima da CU e esquerdas à CU já foram codificadas, para que as amostras correspondentes possam ser usadas para intrapredição e parâmetros de codificação associados podem ser usados para prever os parâmetros de codificação da CU atual.
[0047] Em outras palavras, o split_cu_flag [x0] [y0] especifica se uma unidade de codificação é dividida em unidades de codificação com meio tamanho horizontal e vertical. Os índices de matriz x0, y0 especificam o local (x0, y0) da amostra de luma superior esquerda do bloco de codificação considerado em relação à amostra de luma superior esquerda da imagem. Quando split_cu_flag [x0] [y0] não está presente, o seguinte se aplica ao decodificador: - Se log2CbSize (parâmetro que especifica o tamanho do bloco de codificação) for maior que MinCbLog2SizeY (parâmetro que especifica o tamanho de unidade de codificação configurável mínimo), o valor de split_cu_flag [x0] [y0] será inferido como 1. - Caso contrário (log2CbSize é igual a MinCbLog2SizeY), o valor de split_cu_flag [x0] [y0] será inferido como 0.
[0048] A matriz CtDepth [x] [y] especifica a profundidade de árvore de codificação para um bloco de codificação de luma cobrindo a localização (x, y). Quando split_cu_flag [x0] [y0] é igual a 0, CtDepth [x] [y] é inferido como cqtDepth para x = x0..x0 + nCbS - 1 e y = y0..y0 + nCbS - 1.
[0049] A Figura 4 mostra um particionamento de árvore quádrupla e árvore binária misto. O particionamento de árvore quádrupla é indicado por linhas sólidas, enquanto o particionamento de árvore binária é indicado por linhas tracejadas. Os rótulos 1 ou 0 nos nós que representam as unidades de codificação a serem adicionalmente divididas pela árvore binária indicam se a divisão binária é aplicada vertical ou horizontalmente, respectivamente.
[0050] O tamanho horizontal e vertical de uma imagem de vídeo, em amostras de luma, deve ser um múltiplo inteiro do tamanho de CU mínimo, em amostras de luma, transmitido no conjunto de parâmetros de sequência, mas não precisa ser um múltiplo inteiro do tamanho de CTU. Se o tamanho horizontal ou vertical das imagens de vídeo não representa um múltiplo inteiro do tamanho de CTU, as CTUs nas bordas serão inferidas para serem divididas até que as fronteiras dos blocos resultantes coincidam com a fronteira de imagem. Para esta divisão forçada, nenhum sinalizador de divisão é transmitido, mas os blocos resultantes podem ser divididos adicionalmente usando a sintaxe de árvore quádrupla descrita acima. As CUs que ficam fora da área de imagem não são codificadas.
[0051] Esta divisão é ilustrada na Figura 5. Em particular, a Figura 5 mostra a fronteira de quadro acima da qual 56 linhas (128 amostras de comprimento) são uma porção de fronteira de uma fatia ou imagem. A parte da CTU abaixo da fronteira de quadro pode pertencer a outra fatia ou pode não estar presente no geral, por exemplo, se a fronteira de quadro for a fronteira de imagem inferior. Como pode ser visto, a divisão de árvore quádrupla forçada é aplicada às 128 x 56 amostras.
[0052] A subdivisão dos CTBs de croma está em HEVC sempre alinhada com a dos respectivos CTBs de luma. Note que a presente divulgação pode manipular os componentes de croma da mesma maneira, mas não está limitada a eles. Também pode haver uma divisão independente de diferentes componentes de cores.
[0053] Após realizar a divisão da imagem na unidade de divisão 110, a transformação, quantificação e codificação de entropia são realizadas respectivamente por uma unidade de transformada 130, uma unidade de quantificação 140 e uma unidade de codificação de entropia 150, de modo a gerar como saída o fluxo de bits de vídeo codificado.
[0054] O fluxo de vídeo pode incluir uma pluralidade de quadros. Os blocos, por exemplo, do primeiro quadro do fluxo de vídeo são intracodificados por meio de uma unidade de intrapredição 190. Um intraquadro é codificado usando informação apenas desse quadro, para que possa ser decodificado independentemente de outros quadros. Um intraquadro pode assim fornecer um ponto de entrada no fluxo de bits, por exemplo, para acesso aleatório. Blocos de outros quadros do fluxo de vídeo podem ser codificados por meio de uma unidade de interpredição 195: cada bloco de um quadro intercodificado é previsto a partir de um bloco em outro quadro (quadro de referência), por exemplo, um quadro previamente codificado. Uma unidade de seleção de modo 180 é configurada para selecionar se um bloco de um quadro deve ser intraprevisto ou interprevisto, ou seja, se será processado pela unidade de intrapredição 190 ou pela unidade de interpredição 195. A unidade de seleção de modo 180 também controla os parâmetros de intra de interpredição. Para permitir a atualização da informação de imagem, um quadro intercodificado pode compreender não apenas blocos intercodificados, mas também um ou mais blocos intracodificados. Os intraquadros, por outro lado, contêm apenas blocos intracodificados e nenhum intercodificado. Os intraquadros podem ser inseridos na sequência de vídeo (por exemplo, regularmente, ou seja, cada vez após um certo número de interquadros) para fornecer pontos de entrada para decodificação, ou seja, pontos onde o decodificador pode começar a decodificar sem usar a informação de quadro anterior.
[0055] A unidade de intrapredição 190 é uma unidade de predição de bloco. Para realizar a predição espacial ou temporal, os blocos codificados podem ser processados adicionalmente por uma unidade de quantificação inversa 145 e uma unidade de transformada inversa 135. Após a reconstrução do bloco por um reconstrutor 125, uma unidade de filtragem de circuito 160 pode ser aplicada para melhorar adicionalmente a qualidade da imagem decodificada. O reconstrutor 125 adiciona os resíduos decodificados ao preditor para obter o bloco reconstruído. Os blocos filtrados formam então os quadros de referência que são então armazenados em um buffer de quadro 170. Esse circuito de decodificação (decodificador) no lado de codificador fornece a vantagem de produzir quadros de referência que são os mesmos que as imagens de referência reconstruídas no lado de decodificador. Por conseguinte, o lado de codificador e decodificador operam de maneira correspondente. O termo "reconstrução" aqui refere-se à obtenção do bloco reconstruído por adicionar o bloco residual decodificado ao bloco de predição.
[0056] A unidade de interpredição 195 recebe como entrada um bloco de um quadro ou imagem atual a ser codificado e um ou vários quadros ou imagens de referência a partir do buffer de quadro 170. Estimativa de movimento e compensação de movimento são realizadas pela unidade de interpredição 195. A estimativa de movimento é usada para obter um vetor de movimento e um quadro de referência, por exemplo, com base em uma função de custo. A compensação de movimento descreve então um bloco atual do quadro atual em termos da translação de um bloco de referência do quadro de referência para o quadro atual, ou seja, por um vetor de movimento. A unidade de interpredição 195 seleciona um bloco de predição (isto é, um preditor) para o bloco atual dentre um conjunto de blocos candidatos (isto é, preditores candidatos) no um ou vários quadros de referência, de modo que o bloco de predição minimize a função de custo. Em outras palavras, um bloco candidato para o qual a função de custo é mínima será usado como o bloco de predição para o bloco atual.
[0057] Por exemplo, a função de custo pode ser uma medida de uma diferença entre o bloco atual e o bloco candidato, ou seja, uma medida do resíduo do bloco atual em relação ao bloco candidato. Por exemplo, a função de custo pode ser uma soma das diferenças absolutas (SAD) entre todos os pixels (amostras) do bloco atual e todos os pixels de bloco candidato na imagem de referência candidata. No entanto, em geral, qualquer métrica de similaridade pode ser empregada, como erro quadrático médio (MSE) ou métrica de similaridade estrutural (SSIM).
[0058] No entanto, a função de custo também pode ser o número de bits que são necessários para codificar tal interbloco e/ou distorção resultante dessa codificação. Assim, um procedimento de otimização de distorção de taxa pode ser usado para decidir sobre a seleção de vetor de movimento e/ou em geral nos parâmetros de codificação, como usar inter ou intrapredição para um bloco e com quais definições.
[0059] A unidade de intrapredição 190 recebe como entrada um bloco de um quadro ou imagem atual a ser intracodificado e uma ou várias amostras de referência a partir de uma área já reconstruída do quadro atual. A intrapredição descreve então os pixels de um bloco atual do quadro atual em termos de uma função de amostras de referência do quadro atual. A unidade de intrapredição 190 produz um bloco de predição para o bloco atual, em que o referido bloco de predição minimiza vantajosamente a diferença entre o bloco atual a ser codificado e seu bloco de predição, isto é, minimiza o bloco residual. A minimização do bloco residual pode ser baseada, por exemplo, em um procedimento de otimização de distorção de taxa. Em particular, o bloco de predição é obtido como uma interpolação direcional das amostras de referência. A direção pode ser determinada pela otimização de distorção de taxa e/ou calculando uma medida de similaridade como mencionado acima em conexão com a interpredição.
[0060] A diferença entre o bloco atual e sua predição, ou seja, o bloco residual, é então transformada pela unidade de transformada 130. Os coeficientes de transformada são quantificados pela unidade de quantificação 140 e codificados por entropia pela unidade de codificação de entropia 150. O fluxo de bits de vídeo codificado assim gerado compreende blocos intracodificados e blocos intercodificados e a sinalização correspondente (como a indicação de modo, indicação do vetor de movimento e/ou direção intrapredição). A unidade de transformada 130 pode aplicar uma transformação linear, como uma transformação discreta de Fourier (DFT) ou uma transformação de cosseno discreta (DCT). Essa transformação no domínio da frequência espacial fornece a vantagem de que os coeficientes resultantes têm valores tipicamente mais altos nas frequências mais baixas. Assim, após uma varredura de coeficiente efetiva (como ziguezague), e quantificação, a sequência de valores resultante geralmente possui alguns valores maiores no início e termina com uma sequência de zeros. Isso permite uma codificação adicionalmente eficiente. A unidade de quantificação 140 realiza uma compressão com perdas, reduzindo a resolução dos valores de coeficiente. A unidade de codificação de entropia 150 então atribui palavras de código binárias a valores de coeficiente. As palavras de código são gravadas em um fluxo de bits chamado de fluxo de bits codificado. O codificador de entropia também codifica a informação de sinalização (não mostrada na Figura 1) que pode incluir codificação de acordo com a sintaxe de sinalizador de divisão mostrada acima.
[0061] A Figura 2 mostra um exemplo de um decodificador de vídeo 200. O decodificador de vídeo 200 compreende particularmente um buffer de imagem de referência 270 e uma unidade de intrapredição 290, que é uma unidade de predição de bloco. O buffer de imagem de referência 270 é configurado para armazenar pelo menos um quadro de referência reconstruído a partir do fluxo de bits de vídeo codificado do fluxo de bits de vídeo codificado. A unidade de intrapredição 290 é configurada para gerar um bloco de predição, que é uma estimativa do bloco a ser decodificado. A unidade de intrapredição 290 é configurada para gerar esta predição com base em amostras de referência que são obtidas a partir do buffer de imagem de referência 270.
[0062] O decodificador 200 é configurado para decodificar o fluxo de bits de vídeo codificado gerado pelo codificador de vídeo 100 e, de preferência, tanto o decodificador 200 e o codificador 100 geram previsões idênticas para o respectivo bloco a ser codificado/decodificado. Os recursos do buffer de imagem de referência 270 e da unidade de intrapredição 290 são semelhantes aos recursos do buffer de imagem de referência 170 e da unidade de intrapredição 190 da Figura 1.
[0063] O decodificador de vídeo 200 compreende outras unidades que também estão presentes no codificador de vídeo 100 como, por exemplo, uma unidade de quantificação inversa 240, uma unidade de transformada inversa 230 e uma unidade de filtragem de circuito 260, que correspondem respectivamente à unidade de quantificação inversa 140, a unidade de transformada inversa 150 e a unidade de filtragem de circuito 160 do codificador de vídeo 100.
[0064] Uma unidade de análise, decodificação de entropia e divisão de fluxo de bits 250 é configurada para analisar e decodificar o fluxo de bits de vídeo codificado recebido para obter coeficientes de transformada residuais quantificados e informação de sinalização. Os coeficientes de transformada residuais quantificados são alimentados à unidade de quantificação inversa 240 e a uma unidade de transformada inversa 230 para gerar um bloco residual. O bloco residual é adicionado a um bloco de predição em um reconstrutor 225 e a soma resultante é alimentada à unidade de filtragem de circuito 260 para obter um bloco de vídeo decodificado. Os quadros do vídeo decodificado podem ser armazenados no buffer de imagem de referência 270 e servem como quadros de referência para interpredição. A informação de sinalização analisada e decodificada do fluxo de bits geralmente pode incluir informação de controle relacionada ao particionamento de quadro. Para analisar e decodificar a imagem corretamente, a informação de controle é usada para recuperar a divisão da imagem em unidades de codificação, a fim de atribuir corretamente os seguintes dados decodificados às respectivas unidades de codificação.
[0065] Geralmente, as unidades de intrapredição 190 e 290 das Figuras 1 e 2 podem usar amostras de referência de uma área já codificada para gerar sinais de predição para blocos que precisam ser codificados ou precisam ser decodificados.
[0066] A unidade de análise, decodificação de entropia e divisão de fluxo de bits 250 recebe como entrada o fluxo de bits codificado. O fluxo de bits pode primeiro ser analisado, ou seja, os parâmetros de sinalização e os resíduos são extraídos do fluxo de bits. A sintaxe e a semântica do fluxo de bits podem ser definidas por um padrão para que os codificadores e decodificadores possam trabalhar de maneira interoperável.
[0067] A presente divulgação apresenta uma nova abordagem da partição forçada de fronteira na codificação de vídeo híbrida baseada em bloco. Em particular, o particionamento forçado de fronteira é realizado pelo menos parcialmente usando a estrutura de árvore binária (BT). Como, de acordo com a observação dos inventores, a maioria dos blocos de fronteira pode usar o mesmo modo de predição, as partições forçadas de árvore quádrupla (QT) para as CTUs nas fronteiras de quadro nem sempre são necessárias. Em vez da partição de QT forçada, em uma modalidade, é introduzido a BT horizontal forçada para a porção de fronteira inferior e/ou a BT vertical forçada para a porção da fronteira direita (supondo que os vizinhos superior e esquerdo já sejam reconstruídos na ordem de processamento da CTU a partir da esquerda para a direita e de cima para baixo).
[0068] Em particular, como mostrado na Figura 6, de acordo com uma modalidade, um aparelho 600 (que pode ser implementado nas unidades 110, 250 descritas acima) para dividir 610 uma porção de imagem em unidades de codificação incluindo um circuito de processamento que, em operação subdivide a porção de imagem em um número inteiro de unidades de árvore de codificação com um tamanho predeterminado e uma porção de fronteira com um tamanho menor que o tamanho predeterminado em pelo menos uma primeira direção que seja ou a direção horizontal ou vertical. Além disso, o circuito de processamento, em operação, particiona 630 a porção de fronteira hierarquicamente em unidades de codificação incluindo uma unidade de codificação mais profunda com tamanhos diferentes nas respectivas direções horizontal e vertical, a unidade de codificação mais profunda sendo menor na primeira direção.
[0069] As CTUs obtidas pela divisão de quadro 610 podem ser ainda particionadas hierarquicamente 620. Esta partição pode ser realizada de qualquer maneira, por exemplo, como ilustrado nas Figuras 3 e 4 e descrito com referência a elas acima.
[0070] A Figura 6 mostra a estrutura interna do circuito do aparelho 600. Esse circuito pode ser qualquer tipo de hardware e software com unidades funcionais 610, 620 e 630 para a respectiva divisão do quadro em CTUs, particionamento das CTUs e particionamento da porção de fronteira. Essas unidades podem ser implementadas, por exemplo, em um único processador. No entanto, a invenção não se limita a essa aplicação e essas unidades também podem ser implementadas por peças de hardware separadas.
[0071] A porção de fronteira pode estar localizada apenas em uma fronteira vertical (se o tamanho da imagem na direção vertical não for um número inteiro múltiplo do tamanho de CTU vertical) ou apenas na fronteira horizontal (se o tamanho da imagem na direção horizontal não for um número inteiro múltiplo do tamanho de CTU horizontal) ou em ambas a fronteira vertical e horizontal (se o tamanho da imagem na direção horizontal, bem como na vertical não for múltiplo inteiro dos respectivos tamanhos de CTU horizontais e verticais).
[0072] As imagens comuns a serem codificadas têm um tamanho sendo múltiplo de CTUs. A Figura 7 visualiza um exemplo de uma fronteira de imagem inferior 700 e a porção de fronteira correspondente 710 (sombreada). A porção 750 ilustra a porção restante da imagem com tamanho em múltiplos inteiros de CTUs vertical e horizontalmente. Em particular, o tamanho vertical de uma CTU é indicado como 770V, enquanto o tamanho horizontal da CTU é indicado como 770H. Como pode ser visto na Figura 7, a porção de fronteira neste exemplo é um múltiplo inteiro do tamanho de CTU 770H na direção horizontal. No entanto, na direção vertical, a porção de fronteira 710 tem um tamanho de um lembrete após a divisão do tamanho de imagem vertical pelo tamanho de CTU vertical 770V. A porção 720 é apenas virtual e mostra a diferença entre a altura da porção de fronteira e o tamanho de CTU. Note que nas implementações atuais a CTU é quadrada, de modo que os tamanhos 770H e 770V são os mesmos. No entanto, a presente divulgação não se limita a isso e os tamanhos vertical e horizontal da CTU podem diferir.
[0073] A fim de codificar (e correspondentemente decodificar) a porção de fronteira, a porção de fronteira 710 na Figura 7 é dividida em CTUs incompletas, isto é, em porções que têm tamanho horizontal da CTU 770H e tamanho vertical menor que o tamanho de CTU 770V. Essas CTUs incompletas são ainda particionadas à força, como mostra a Figura 8.
[0074] A Figura 8 mostra exemplos em que a porção de fronteira está na fronteira horizontal, de modo que a divisão ocorre na direção vertical. Em particular, no lado esquerdo da Figura 7, uma porção de fronteira é mostrada correspondendo à largura de uma CTU (neste exemplo, são 128 amostras), mas uma altura menor que a altura da CTU (apenas 56 amostras). A fronteira vertical é particionada à força pela divisão de árvore binária. Em particular, o maior tamanho de unidade que se ajusta ao comprimento de 56 amostras é a unidade de profundidade-2 do tamanho de 32 amostras, uma vez que a unidade de profundidade-1 com 64 amostras não se encaixa na porção de fronteira alta de 56 amostras. As 24 amostras restantes são divididas na unidade de profundidade-3 do tamanho de 16 amostras e a porção restante de 8 amostras (correspondente ao tamanho de CU de profundidade-4) que chega até a fronteira de imagem para que não seja necessária mais divisão. Neste exemplo, nenhuma divisão é aplicada na fronteira horizontal. Em resumo, a unidade de porção de fronteira com um tamanho de uma CTU em uma direção e um tamanho menor em outra direção é particionada por divisão de árvore binária, ou seja, dividindo a unidade de porção de fronteira hierarquicamente em duas porções das quais uma tem o tamanho da próxima CU mais rasa que se encaixa no tamanho menor e uma porção restante que é dividida adicionalmente até que a CU mais profunda atinja a fronteira de quadro. Essa partição da porção de CTU de 128 x 56 de tamanho resulta aqui em 3 unidades de codificação de porção de fronteira com os respectivos tamanhos de 128 x 32, 128 x 16 e 128 x 8.
[0075] Em resumo, de acordo com uma implementação, o circuito de processamento é configurado para particionar porção de fronteira em todos os níveis de particionamento por divisão de árvore binária.
[0076] No lado direito da Figura 8, é mostrado um exemplo de particionamento no qual, inicialmente, um particionamento de árvore quádrupla é aplicado na profundidade de hierarquia 1 (profundidade de hierarquia 0 correspondente ao tamanho de CT), resultando em duas CUs do tamanho 64 x 56 que são adicionalmente divididas em árvore binária em pares respectivos de CUs de 64 x 32, 64 x 16 e 64 x 8 de tamanho.
[0077] Os exemplos na Figura 8 mostram o particionamento da fronteira inferior. No entanto, a presente divulgação é igualmente aplicável à divisão de qualquer outra fronteira, como a fronteira direita. Se a subdivisão da imagem em CTUs for realizada da esquerda para a direita e de cima para baixo, as porções de fronteira estarão no fundo e/ou lado direito da imagem. No entanto, o particionamento também pode ser feito de baixo para cima e da direita para a esquerda; nesse caso, as fronteiras superior e esquerda precisariam ser divididas, o que é possível da mesma maneira que a descrita na Figura 8. Da mesma forma, o exemplo acima mostra o particionamento da CTU incompleta a partir do topo dessa CTU. No entanto, em geral,
também é possível dividir a CTU incompleta a partir da fronteira de imagem (quadro) para o topo.
[0078] Conforme mostrado no lado direito da Figura 8, a divisão de CTU incompleta pode ser uma divisão de QT e BT mista. O circuito de processamento pode ser configurado para particionar a porção de fronteira por divisão de árvore binária pelo menos no nível de particionamento mais profundo. Isso fornece uma vantagem de que a fronteira maior que coincide com a fronteira de quadro não precisa ser dividida em unidades menores. Muitas CUs pequenas demais na fronteira de quadro podem resultar em mais complexidade de codificação e em fluxo de bits maior. Note que nesta modalidade, desde que a CU mais profunda tenha um lado maior que o outro (ou seja, resulte de particionamento de árvore binária), as hierarquias de profundidade restantes podem ser determinadas de qualquer forma e não precisam ser forçadas em uma maneira predefinida. Em vez disso, o particionamento pode ser feito por otimização de RD e acompanhado pela informação de controle correspondente, permitindo que o decodificador recupere o mesmo particionamento. O particionamento também pode ser parcialmente forçado e parcialmente disponível para otimização de RD.
[0079] Em outras palavras, o circuito de processamento pode ser configurado para particionar a porção de fronteira também por divisão de árvore quádrupla. Assim, pode haver um particionamento forçado de QT ou BT predefinido para cada profundidade definida por um padrão ou configurável por informação de controle incluída no fluxo de bits.
[0080] Por exemplo, a partição de BT forçada é feita somente após um certo número de níveis de QT forçados. Isso pode ser conseguido na medida em que o circuito de processamento é configurado para particionar a porção de fronteira por divisão de árvore quádrupla em N níveis mais rasos, N sendo um número inteiro maior que ou igual a zero e menor que o número de níveis de hierarquia de particionamento. O circuito de processamento é ainda configurado para particionar a porção de fronteira por divisão de árvore binária nos níveis de hierarquia de particionamento restantes. Quando se refere à Figura 8, no lado esquerdo não há divisão de QT realizada.
[0081] A informação de controle no fluxo de bits pode, portanto, incluir um indicador de QT/BT especificando se um QT é aplicado ou não e, se afirmativo, quantos níveis são divididos de QT. Esse indicador de QT/BT pode receber correspondentemente uma pluralidade de valores, como o valor 0, se nenhuma divisão de QT for aplicada (como mostrado na Figura 8 no lado esquerdo) e valores correspondentes a N. Essa sinalização é mais curta que a sinalização para cada CU em cada nível, se QT, BT ou nenhum particionamento for aplicado. No entanto, a presente divulgação pode usar qualquer tipo de sinalização.
[0082] Alternativamente, ou em combinação com a sinalização de controle, os níveis de QT forçado podem ser selecionados de forma adaptativa por ID temporal ou tipo de fatia. Essa abordagem fornece a vantagem de que nenhuma sinalização explícita (ou menor quantidade de sinalização explícita) é necessária. Ainda assim, o particionamento forçado pode ser definido de forma adaptativa pelo menos com relação ao tipo de predição.
[0083] HEVC especifica um identificador temporal
(ID), que indica um nível em uma estrutura de predição temporal hierárquica (dependência entre os quadros interprevistos). O tipo de fatia pode ser como fatia intraprevista, fatia interprevista apenas aplicando predição com base em uma imagem de referência, fatia interprevista aplicando predição bidirecional ou semelhantes.
[0084] Por exemplo, se o identificador temporal for 0 (significando I imagem) ou se o tipo de fatia for uma fatia prevista, a partição precisará ser mais precisa do que para um ID temporal mais alto (imagem interprevista) ou para as P/B fatias (fatias interprevistas).
[0085] Os parâmetros, ID temporal ou tipo de fatia acima, são apenas exemplares. Em geral, podem ser aplicados parâmetros de codificação adicionais e/ou diferentes. Além disso, em vez do tipo de fatia, o modo de predição das CUs na CTU vizinha pode ser usado para determinar a partição de porção de fronteira na base da CTU (CTU de fronteira incompleta).
[0086] Por outro lado, sinalizar o particionamento pode fornecer mais liberdade para escolher a divisão apropriada, de modo que a eficiência geral de codificação seja aumentada. Por exemplo, o particionamento pode ser ajustado pela otimização da função de custo (por exemplo, pela otimização de RD) e sinalizado no fluxo de bits para indicar quantos níveis de QT forçado são usados para o decodificador (ou seja, sinalizando se QT é usado ou sinalizando N como mencionado acima).
[0087] Alternativamente, as CTUs de fronteira (incompletas) são primeiro particionadas pela otimização de RD até o último nível de hierarquia (profundidade) ou até um nível de hierarquia sinalizado M. Os blocos de nível mais profundo restantes localizados na fronteira de quadro então usam o particionamento de BT forçado ou combinação de particionamento de QT forçado e BT forçado.
[0088] A Figura 9 mostra três exemplos de particionamento de fronteira pelo menos parcialmente forçado.
[0089] Quando a CTU/CU está localizada na fronteira inferior, o particionamento de BT forçado horizontal pode ser usado sem otimização de RD e sem sinalizador de partição sinalizando recursivamente (por dividir a fronteira vertical). A partição de BT horizontal forçada é finalizada quando a amostra inferior direita dos nós folhas está localizada dentro da fronteira inferior de fatia/imagem. Após o particionamento de BT horizontal forçado, as CUs particionadas forçadas a partir da CTU de fronteira são possivelmente adicionalmente divididas com base no custo de RD no codificador, e um sinalizador de divisão adicional pode ser sinalizado a partir do codificador para o decodificador. A Figura 9, parte (a) mostra um exemplo de fronteira inferior de 128 x 56 amostras particionada por BT horizontal forçada (isto é, divisão da fronteira vertical).
[0090] Da mesma forma, para a CTU/CU localizada na fronteira direita, as partições de BT forçadas verticais são usadas possivelmente sem verificação de custo de RD e sem sinalização de bandeira de divisão recursivamente até que a amostra inferior direita dos nós folhas esteja localizada dentro da fronteira direita de fatia/imagem. Após o particionamento de BT vertical forçado (da fronteira horizontal), as CUs particionadas forçadas a partir da CTU de fronteira são possivelmente divididas pela otimização de RD no codificador e um sinalizador de divisão adicional é sinalizado a partir do codificador para o decodificador. A Figura 8, parte (b) mostra um exemplo de fronteira direita longa de 56 x 128 amostras particionada por BT horizontal forçada.
[0091] De acordo com outro exemplo, para a fronteira de canto inferior direita localizada na CTU/CU, primeiro o particionamento de QT hierárquico forçado é usado sem qualquer sinalização, recursivamente. Quando a amostra inferior direita da CU atual está localizada na fronteira inferior ou direita, particionamento de BT horizontal ou vertical forçado é operado recursivamente até que as amostras inferiores direitas dos nós folhas estejam localizadas dentro da fronteira de fatia/imagem. Caso contrário, quando a amostra inferior direita da CU atual ainda estiver localizada na fronteira de canto, uma partição de QT forçada adicional será usada até que as amostras inferiores direitas dos nós folhas estejam dentro do quadro de fatia/imagem. As CUs particionadas forçadas obtidas pela divisão a partir da CTU de fronteira são possivelmente divididas adicionalmente por otimização de RD no codificador e um sinalizador de divisão adicional pode ser sinalizado a partir do codificador para o decodificador. A Figura 9, parte (c) mostra o exemplo de fronteira de canto inferior direita de 56 x 56 amostras particionada por QT e BT forçada.
[0092] Em particular, na Figura 9, parte (c), é mostrada a CTU de fronteira de canto incompleta de 56 x 56 amostras. O primeiro nível de profundidade de 64 x 64 amostras após a divisão de QT não está dentro da porção de fronteira. O segundo nível de profundidade de 32 x 32 amostras após QT está dentro da porção de fronteira, mas deixa uma porção horizontal (CU inferior esquerda de 32 x 24 amostras), uma vertical (CU superior direita de 24 x 32 amostras) e outra porção de canto (CU inferior direita de 24 x 24 amostras) para serem divididas.
[0093] Neste exemplo, as CUs de fronteira horizontal e vertical são adicionalmente divididas de árvore binária, de modo que as unidades de nível mais profundo tenham um lado mais longo ao longo da fronteira de imagem/fatia. A porção de canto pode ser dividida adicionalmente da mesma maneira que a descrita para a porção de canto de nível superior acima, isto é, por divisão de árvore quádrupla.
[0094] Em outras palavras, o circuito de processamento, em operação, pode particionar a porção de fronteira por divisão de árvore binária na direção horizontal e na vertical. Esse é especialmente o caso se a porção de fronteira se estender ao longo de ambas fronteiras de imagem/fatia, a vertical e a horizontal e incluir a porção de canto.
[0095] Para o caso de canto, o circuito de processamento, em operação, particiona em cada nível de hierarquia uma porção de canto da porção de fronteira por divisão de árvore quádrupla. Por exemplo, na Figura 9, parte (c), um canto em ambos os lados tendo o tamanho de 56 amostras, para a CU de fronteira de canto 960, QT forçada de quatro níveis é necessária (divisão de QT da CTU de 128 x 128 resultando em quatro CUs de 64 x 64 com a CU superior esquerda incluindo o canto de 56 x 56; divisão de QT da CU esquerda superior de 64 x 64, resultando em quatro CUs de 32 x 32 com a CU inferior direita incluindo o canto de 24 x 24; divisão de QT da CU inferior direita de 32 x 32 resultando em quatro CUs de 16 x 16, a parte inferior direita das mesmas incluindo o canto de 8 x 8 e o passo final da divisão de QT da CU incompleta inferior direita de 16 x 16 para quatro Cus 8 x 8, ou seja, partições de tamanho mínimo entre as quais a partição superior esquerda está localizada na imagem enquanto as outras não).
[0096] Por outro lado, para a CU de fronteira inferior 950, são necessários dois níveis de QT forçada e, posteriormente, dois níveis de BT forçada (divisão de QT da CTU 128 x 128, divisão de QT da parte superior esquerda de CU de 64 x 64, divisão binária da CU de 32 x 32 incluindo a porção de fronteira de 32 x 24 para duas CUs de 32 x 16 na fronteira inferior; e o passo final de divisão de BT da CU de 32 x 16 inferior em duas CUs de 32 x 8 das quais apenas a superior está dentro da fronteira de imagem).
[0097] Para a CU de canto 960, o nível de QT definido N não será levado em consideração e a CU de canto será dividida força pela QT em todos os níveis hierárquicos. Em particular, no caso de canto, se a amostra inferior direita do nó folha (CU incompleta, ou seja, localizada parcialmente dentro da porção de fronteira) estiver localizada fora da fronteira direita e da fronteira inferior, essa CU incompleta atual será reconhecida como bCorner (Figura 10, passo 1050, "Sim"). Se bCorner for verdadeiro para a CU atual, a CU atual será dividida adicionalmente usando a QT forçada. O particionamento termina quando um nó folha resultante da divisão está completamente dentro da porção de fronteira ou se a porção de canto se torna um caso de fronteira inferior ou direita (bBottom, bRight, significando que a fronteira inferior direita da CU atual está localizada apenas fora da fronteira inferior ou direita da porção de fronteira, ou seja, a imagem ou fatia.
[0098] Neste exemplo, se N = 0 ou 1 ou 2, o esquema de divisão de QT forçada será o mesmo, porque a CU 960 sempre precisará de QT forçada e a CU 950 será dividida por QT nos dois primeiros níveis de qualquer maneira. Isso ocorre porque a CU da profundidade 0 (CTU), a CU da profundidade 1 (amostras de 64 x 64) ainda são CUs de canto. Somente após a divisão da CU de 64 x 64, na profundidade 2, há quatro CUs, das quais uma não é uma CU de fronteira no geral (superior esquerdo), duas são CUs de fronteira inferior e fronteira direita e apenas uma é CU de canto.
[0099] Se N = 3, seria necessário mais uma QT forçada e, em seguida, o esquema de divisão forçada seria alterado para a CU 950, de modo que a CU de 32 x 32 inferior esquerda seria adicionalmente dividida em QT em vez de dividida em BT. A divisão da CU 960 permanece a mesma.
[00100] De acordo com a presente divulgação, uma combinação de QT forçada e BT forçada pode ser usada como já brevemente discutido acima. Em particular, para uma textura ou movimento complexo na fronteira, a partição detalhada pode ser benéfica para a qualidade da imagem. Portanto, o particionamento forçado combinado por QT e BT também é fornecido. Em particular, em uma combinação de implementação de QT forçada e BT forçada, a partição de BT forçada é aplicada somente após um certo número N de níveis de QT forçada. Se sob outra configuração o particionamento de QT for permitido após o particionamento de BT, o particionamento de QT forçado será possivelmente operado após a BT forçada.
[00101] Na implementação combinada de BT forçada e QT forçada, existem várias maneiras de definir o número de níveis de QT forçada. Se o nível de QT forçada predefinido for usado, todas as CTUs de fronteira serão primeiro particionadas a força com a mesma estrutura de QTBT; é possível uma partição adicional com base na otimização de RD. A Figura 8 no lado direito ilustra o exemplo de particionamento de QT de um nível e de BT de três níveis da fronteira inferior de 128 x 56 amostras em uma CTU de 128 x 128 incompleta.
[00102] Os níveis de QT forçada podem ser selecionados de forma adaptativa por parâmetros de codificador, como ID temporal ou tipo de fatia. Certos tipos de fatia ou ID temporal inferior podem precisar de uma partição mais detalhada. Além disso, os níveis de QT forçada podem ser ajustados pela otimização de distorção de taxa e sinalizados no fluxo de bits para indicar quantos níveis de QT forçada são usados. Uma sinalização de número de nível no nível de CTU pode ser usada para indicar quantos níveis de QT forçada foram usados para uma CTU. Além disso, um número de nível de sinalização no cabeçalho de fatia pode ser usado para indicar quantos níveis de QT forçada foram usados para a fatia atual. Uma sinalização de número de nível em SPS pode ser usada para indicar quantos níveis de QT forçada foram usados para uma sequência de vídeo codificada. Uma sinalização de número de nível em PPS pode ser usada para indicar quantos níveis de QT forçada foram usados para uma imagem codificada.
[00103] O número de níveis de QT forçada também pode ser determinado com base em qualquer outra abordagem. Por exemplo, a entropia das amostras originais dentro da região de fatia/quadro/fronteira pode ser usada. A entropia é calculada somando os termos p_i * log2 (p_i) sobre i, em que p_i é uma probabilidade do valor de intensidade de amostra I na região determinada. O sinal "*" significa multiplicação, "log2" significa logaritmo com base 2. Quanto maior a entropia, maior a estrutura provavelmente presente na região de fatia/quadro/fronteira e, portanto, as CUs menores podem ser apropriadas. Contudo, estes são apenas exemplos e, em princípio, a presente invenção não se limita a nenhuma maneira particular em que o número de níveis de QT forçada é determinado. Quaisquer outras medidas, como variação da presença de arestas, podem ser usadas.
[00104] O circuito de processamento, em operação, particiona a porção de fronteira até que a unidade de codificação de nível mais profundo permaneça na porção de fronteira.
[00105] De acordo com a presente divulgação, é fornecido um método para dividir uma porção de imagem em unidades de codificação. O método inclui subdividir a porção de imagem em um número inteiro de unidades de árvore de codificação com um tamanho predeterminado e uma porção de fronteira com um tamanho menor que o tamanho predeterminado em pelo menos uma primeira direção, que é ou direção horizontal ou vertical. Em seguida, o particionamento da porção de fronteira hierarquicamente em unidades de codificação é realizado incluindo uma unidade de codificação mais profunda com tamanhos diferentes nas respectivas direções horizontal e vertical, a unidade de codificação mais profunda sendo menor na primeira direção.
[00106] Em uma implementação, o particionamento da porção de fronteira compreende ainda os passos de: começar com um nível de particionamento atual sendo o nível de particionamento mais raso; dividir sequencialmente a porção de fronteira em unidades de codificação do nível de particionamento atual, desde que uma unidade de codificação do nível de particionamento atual não atinja a porção de fronteira; assim que a unidade de codificação do nível de particionamento atual não cair dentro da porção de fronteira, aumentar o nível de particionamento e adicionalmente particionar a referida unidade de codificação, em que um particionamento de árvore quádrupla é usado para N níveis de particionamento mais rasos e particionamento de árvore binária é usado caso contrário.
[00107] A divisão sequencial significa que a divisão é realizada do nível mais raso até o nível mais profundo. Em particular, a divisão forçada é realizada em cada nível de hierarquia para uma unidade de codificação localizada na fronteira (uma CU de fronteira), significando que essa CU inclui amostras dentro da fronteira de imagem/fatia (dentro da porção de fronteira) e uma parte localizada fora da fronteira de imagem/fatia. Aqui, o termo CU refere-se à CU com o tamanho resultante do particionamento que, no entanto, é incompleto, pois inclui menos amostras do que as fornecidas pelo seu tamanho, ou seja, está parcialmente localizado fora da imagem/fatia particionada.
[00108] A divisão forçada é, portanto, realizada para particionar a porção de fronteira aproximadamente a partir das CUs maiores até as CUs menores, de modo que toda a porção de fronteira seja dividida. Nenhuma informação de particionamento é necessária para a divisão forçada, pode ser predefinida, como já discutido acima. N pode ser sinalizado ou predefinido, se houver algum nível de QT forçada. O N predefinido significa que tanto o codificador quanto o decodificador têm um conhecimento desse N que pode ser definido por padrão, por exemplo.
[00109] No entanto, depois de realizar a divisão forçada, as CUs de porção de fronteira de divisão forçada podem ser adicionalmente particionadas. Isso pode ser realizado com base na otimização de distorção de taxa e, portanto, também sinalizado no fluxo de bits. Em particular, para as CUs na porção de fronteira, que são maiores que o tamanho de CU mínimo, um sinalizador de divisão ou uma pluralidade de sinalizadores de divisão podem ser sinalizados, indicando se ou não e como essa CU é particionada.
[00110] Note que a informação de particionamento incluída no fluxo de bits pode incluir um sinalizador de divisão de QT e/ou sinalizador de divisão de BT. A divisão de QT e BT também pode ser misturada desde que seja sinalizada ou derivável, qual dos dois tipos de divisão é usado. No lado de decodificador, após a divisão forçada, então divisão adicional é feita com base na informação de particionamento decodificada, como qt_split_cu_flag e bt_split_cu_flag. A Figura 10 mostra uma implementação exemplar detalhada de uma partição de fronteira e, em particular, de BT forçada e a combinação de implementação de QT forçada e BT forçada. As variáveis empregadas na figura têm o seguinte significado: − bBottom indica se a amostra inferior direita da CTU atual ou CU está localizada fora da fronteira inferior. − bRight indica se a amostra inferior direita da CTU ou CU atual está localizada fora da fronteira direita. − bCorner indica se a amostra inferior direita da CTU ou CU atual está localizada fora da fronteira de canto inferior direita. − FQT_LV indica os níveis de QT forçada antes da BT forçada (corresponde a N descrito acima). − uiDepth indica o nível de hierarquia atualmente particionado.
[00111] Como mencionado acima, os níveis de QT forçada podem ser predefinidos, selecionados de forma adaptativa com base em parâmetros de codificador, como tipo de fatia/ID temporal ou com base no custo de RD.
[00112] Em particular, no passo 1010, o particionamento de uma CTU de porção de fronteira (nível 0) é iniciado. Se a CTU for uma CTU na fronteira inferior ou direita (mas não fronteira de canto) no passo 1020, e se uiDepth não for maior que FQT_LV-1, a CTU será dividida no passo 1040 pela BT forçada. Caso contrário, o passo de particionamento de QT forçado 1060 é aplicado. A divisão continua dividindo adicionalmente a CU de porção de fronteira (s). Por exemplo, no exemplo da Figura 8 (b), a CTU (nível 1) FQT_LV é igual a 1. Como uiDepth = 0 é igual a FQT_LV-1 = 0, no passo 1030, a CTU incompleta seria dividida à força por QT no passo 1060, resultando em duas CUs (superior esquerda e direita) que precisam ser divididas adicionalmente. Cada uma dessas CUs seria adicionalmente particionada recursivamente. A CU superior esquerda (nível 1) ainda está incompleta e, portanto, a CU de porção de fronteira. Como CU de fronteira inferior no passo 1020, e como uiDepth = 1 é maior que FQT_LV-1 = 0 no passo 1030, a BT forçada seria aplicada no passo 1040 à CU superior esquerda. A CU superior direita seria particionada da mesma maneira. As CUs de porção de fronteira (incompletas) (64 x 24) seriam adicionalmente divididas no nível 2 por BT no passo 1040. A CU de 64 x 8 restante no nível 3 atingiria a fronteira de imagem e, portanto, resultaria em "Não" nos passos 1020 e 1050. A partição de tamanho 8 como partição mínima não seria adicionalmente dividida no passo 1070, mas sim resultaria em "sim" no passo 1080 e, portanto, interrompe o particionamento no passo 1090. A segunda CU de 64 x 24 seria dividida da mesma forma.
[00113] Por outro lado, a CTU 56 x 56 da parte (c) na Figura 9 é uma CTU de canto. No passo 1020 (nível 0), a CTU passaria para o passo 1050 e, como uma CU de canto seria particionada pela QT no passo 1060. No nível 1, a CU de 56 x 56 superior esquerda seria tratada da mesma maneira, resultando em três CUs de fronteira (inferior esquerdo, superior direito e canto). Ao assumir FQT_LV = 0, significando que não há divisão de QT forçada para as CUs bBottom e bRight, as CUs inferiores esquerdas e superiores direitas serão divididas por BT forçada no passo 1040 (depois de "Sim" no passo 1020 e “Não” no passo 1030). A CU de 24 x 24 de canto (nível 2) passaria o passo 1020 ao passo 1050 e seria particionada pela QT no passo 1060, resultando novamente em três CUs de fronteira com tamanhos 16 x 8, 8 x 8 e 8 x 16 que não precisariam ser adicionalmente dividas e passaria o passo 1020 com "não", passo 1050 com "não" e sobre passo 1070 para parar a condição 1080 e o final 1090. A condição de parada pode ser, por exemplo, um tamanho mínimo, neste exemplo igual a 8.
[00114] Na tabela 2 a seguir, é mostrada uma sintaxe exemplar que permite sinalizar o sinalizador de divisão de QT para as CUs normais (não fronteira). Além disso, o sinalizador de divisão de BT pode ser sinalizado para as CUs diferentes das CUs da porção de fronteira. A sintaxe do coding_quadtree é recursiva, ou seja, o particionamento é hierárquico. O particionamento é realizado se as seguintes condições forem verdadeiras: x0 + cuWidth <= pic_width_in_luma_samples e y0 + cuHeight <= pic_height_in_luma_samples.
[00115] Em outras palavras, desde que o canto inferior direito da CU atual (ou seja, CU atualmente processada por divisão) esteja dentro da imagem, a CTU/CU é dividida por árvore quádrupla ou árvore binária. Note que esta sintaxe é apenas exemplar e que a presente divulgação também pode ser aplicada a outros casos, como o uso apenas de QT ou apenas de BT ou tipos de particionamento selecionáveis adicionais para as CTUs que estão completamente dentro da imagem/fatia. Os valores de cuMinBTSiz, cuMaxBTSize e cuMaxBTDepth empregados na sintaxe são valores predefinidos.
[00116] Nas condições acima, x0 e y0 especificam o local de amostra de canto superior esquerdo da CU atual, cuWidth e cuHeight especificam o tamanho de CU horizontal e vertical e os parâmetros pic_width_in_luma_samples e pic_width_in_luma_samples especificam o tamanho de imagem horizontal e vertical. Note que neste exemplo a imagem inteira é particionada. No entanto, a mesma abordagem é aplicável a porções de imagem decodificáveis independentemente, como fatias, pedaços ou quaisquer outras porções de imagem com fronteiras.
[00117] Semelhante ao padrão HEVC, quando qt_split_cu_flag [x0] [y0] não está presente (caso de fronteira), o seguinte se aplica (no codificador e decodificador): - Se cuWidth (largura da CU de nível atual) for maior que MinQTSize (tamanho de QT mínimo, aqui 8) e cuHeight (altura da CU de nível atual) for maior que MinQTSize, o valor de qt_split_cu_flag [x0] [y0] é inferido como igual a
1. Em outras palavras, a fronteira é dividida a força. - Caso contrário (log2CbSize é igual a MinCbLog2SizeY), o valor de qt_split_cu_flag [x0] [y0] será inferido como igual a 0. Em outras palavras, se a CU atual tiver o tamanho mínimo permitido MinCbLog2SizeY, o decodificador assumirá que a CU é não mais divisão.
[00118] Isso é semelhante ao caso da Tabela 1 acima. coding_quadtree( x0, y0, cqtDepth , cuWidth, Descritor cuHeight) { if( CTUSize >> cqtDepth == cuWidth && uiWidth == uiHeight){ If (x0 + cuWidth <= pic_width_in_luma_sample && y0+cuHeight <= pic_height_in _luma_samples){ qt_split_cu_flag[ x0 ][ y0 ] ae(v) } } …
if( qt_split_cu_flag[ x0 ][ y0 ]
&& ((bBBoundary || bRBoundary)? cqtDepth <= FQT_LV-1 : true ))) { x1 = x0 + cuWidth >> 1 y1 = y0 + cuHeight >>1 coding_quadtree( x0, y0, cqtDepth + 1, cuWidth>>1, cuHeight >>1) if( x1 < pic_width_in_luma_samples ) coding_quadtree( x1, y0, cqtDepth + 1, cuWidth>>1, cuHeight >>1) if( y1 < pic_height_in_luma_samples ) coding_quadtree( x0, y1, cqtDepth + 1, cuWidth>>1, cuHeight >>1) if( x1 < pic_width_in_luma_samples && y1 < pic_height_in_luma_samples ) coding_quadtree( x1, y1, cqtDepth + 1 , cuWidth>>1, cuHeight >>1) } else if (( (cuHeight > cuMinBTSize || cuWidth > cu MinBTSize) && cuWidth <= cuMaxBTSize && cuHeight <= cuMAXBTSize && cuBTDepth < cuMaxBTDepth)) || ((bBBoundary || bRBoundary)? cqtDepth > FQT_LV-1 : false )){ if (! (bBBoundary || bRBoundary)) bt_split_cu_flag[ x0 ][ y0 ] ae(v) if ( bt_split_cu_flag[ x0 ][ y0 ] ==1){ y1 = y0 + cuHeight >> 1 coding_quadtree( x0, y0, cqtDepth, cuWidth, cuHeight >>1) if( y1 < pic_height_in_luma_samples ) coding_quadtree( x0, y1, cqtDepth,
cuWidth, cuHeight >>1) } else if ( bt_split_cu_flag[ x0 ][ y0 ] ==2) { x1 = x0 + cuWidth >> 1 coding_quadtree( x0, y0, cqtDepth, cuWidth>>1, cuHeight) if( x1 < pic_width_in_luma_samples ) coding_quadtree( x1, y0, cqtDepth, cuWidth>>1, cuHeight) } } else coding_unit( x0, y0, log2CbSize ) } Tabela 2: Sintaxe exemplar de BT forçada e QT forçada mais implementação de BT forçada com base na sintaxe mostrada na Tabela 1 (enfatizada pelo sombreamento cinza).
[00119] Como pode ser visto, bt_split_cu_flag pode ser sinalizado. Este sinalizador é sinalizado quando a divisão de BT de uma CTU está configurada para uma CTU/CU fora de uma fronteira (consulte condição if (! (BBBoundary || bRBoundary))). No caso de uma fronteira, a divisão forçada não requer sinalizadores adicionais porque o valor do sinalizador é derivado. Em particular, quando bt_split_cu_flag [x0] [y0] não está presente (caso de fronteira), o seguinte se aplica: - Se bBBoundary (significando que a CU/CTU atual está na fronteira inferior) for verdadeiro e, ao mesmo tempo, cuWidth for maior que MinBTSize ou cuHeight for maior que MinBTSize (a CU/CTU atual não possui o tamanho mínimo e, portanto, pode em princípio, ser adicionalmente dividida), o valor de bt_split_cu_flag [x0] [y0] é inferido como igual a 1 (significando que uma divisão binária adicional é realizada, ou seja, divisão de árvore binária que resulta em lado mais longo da CU dividida sendo paralelo/concorrente com o fundo, ou seja, fronteira horizontal). - bRBoundary (significando que a CU/CTU atual está na fronteira direita) é verdadeiro enquanto cuWidth é maior que MinBTSize ou cuHeight é maior que MinBTSize, o valor de bt_split_cu_flag [x0] [y0] é inferido como 2 (significando que é realizada uma divisão binária adicional, ou seja, a divisão de árvore binária que resulta em um lado mais longo da CU dividida sendo paralelo/coincidente com a direita, ou seja, a fronteira vertical). - Caso contrário, o valor de bt_split_cu_flag [x0] [y0] é inferido como igual a 0, significando que nenhuma divisão binária adicional será executada.
[00120] Estar na fronteira significa que não há CU no nível de hierarquia de particionamento atual ou menor entre a CU atual e a fronteira; em outras palavras, a CU atual pertence à porção de fronteira no nível de hierarquia atual (correspondente a bBBoundary sendo verdadeiro ou bRBoundary sendo verdadeiro). A divisão de BT é usada caso a QT não seja forçada (cqtDepth > FQT_LV-1) e o sinalizador de BT seja incluído no fluxo de bits se a CU atual não for uma CU de fronteira.
[00121] Valores exemplares para a implementação de JEM são cuMinBTSize para interquadro tendo valor 4, cuMAXBTSize para interquadro sendo 128, e cuMAXBTDepth sendo
3. No entanto, a presente divulgação não se limita a esses tamanhos e é aplicável a quaisquer valores selecionados.
[00122] Note que a sintaxe acima é apenas exemplar e pressupõe o conhecimento da variável FQT_LV, que indica o número de níveis de divisão de QT forçada. Se o valor de FQT_LV for zero, então não haverá níveis de QT forçada e toda a divisão de fronteira forçada será realizada pela divisão de árvore binária. A sintaxe e a semântica podem ser implementadas de maneira diferente sem se afastar da presente divulgação.
[00123] Outra solução baseada no software JEM (JEM 5 e 6) poderia ser especificar a seguinte semântica. Quando qt_split_cu_flag [x0] [y0] não está presente (caso de fronteira), o valor de qt_split_cu_flag [x0] [y0] é inferido como igual a 1, significando uma divisão de QT adicional no caso de uma CU de canto ou a QT forçada (se cqtDepth <= FQT_LV-1).
[00124] Quando bt_split_cu_flag [x0] [y0] não está presente (caso de fronteira), o seguinte se aplica: - Se bBBoundary for verdadeiro, o valor de bt_split_cu_flag [x0] [y0] será inferido como igual a 1, significando que a CU de fronteira inferior é dividida pela divisão binária na direção vertical, ou seja, para formar duas CUs horizontais (ou seja, CUs mais longas na direção horizontal do que na direção vertical). - Se bRBoundary for verdadeiro, o valor de bt_split_cu_flag [x0] [y0] será inferido como 2, significando que a CU de fronteira direita é dividida pela divisão binária na direção horizontal, ou seja, para formar duas CUs verticais (ou seja, CUs mais longas na direção vertical que na direção horizontal).
[00125] O exemplo acima mostra uma divisão forçada com um parâmetro definindo o número de níveis de QT forçada antes da divisão de BT ser aplicada. As regras semânticas definem a divisão a ser adotada caso o sinalizador de divisão não esteja presente, ou seja, na fronteira. No entanto, a presente divulgação não se limita a essa abordagem.
[00126] Alternativamente, as CTUs de fronteira (incompletas) podem ser particionadas primeiro pela otimização de RD, e o bloco restante localizado na fronteira de quadro pode usar o particionamento de BT forçado ou uma combinação de particionamento de QT forçado e de BT forçado. O particionamento por otimização de RD implica que os sinalizadores de divisão sejam sinalizados no fluxo de bits para as CUs correspondentes. O particionamento por RD pode ser especificado (ou seja, em padrão ou por sinalização comum para a sequência de imagens ou imagem) como QT ou especificado como BT, de modo que uma escolha entre a BT e a QT não precise ser sinalizada para cada CU. Por outro lado, o sinalizador de divisão pode ser estendido para indicar não apenas se a CU especificada é dividida ou não, mas também se é dividida por QT ou BT.
[00127] No lado de decodificador, o particionamento forçado será operado nas CTUs/CUs de fronteira. Para o particionamento de BT forçado, a BT horizontal forçada (divisão na direção vertical para formar partições horizontais) será usada nas CTUs/CUs localizadas na fronteira inferior até que as amostras inferiores direitas dos nós folhas estejam dentro da fronteira inferior de fatia/imagem. A BT vertical forçada será usada nas CTUs/CUs localizadas na fronteira direita até que as amostras inferiores direitas dos nós folhas estejam dentro da fronteira direita de fatia/imagem. As CTUs/CUs de canto inferior direito serão particionadas usando QT forçada até que as amostras inferiores direitas do nó folha estejam dentro da fronteira de fatia/imagem ou os nós folha se tornem o caso de fronteira direita/inferior. Partições adicionais são operadas com base no sinalizador de divisão decodificado, que pode ser sinalizador de divisão de QT ou BT, dependendo da existência de um número de níveis de particionamento de QT forçado definidos, conforme já descrito acima com referência à sintaxe. Os elementos de sintaxe são gerados pelo codificador e manipulados pelo decodificador conforme explicado acima.
[00128] Para a combinação de QT forçada e BT forçada, o número de níveis de QT forçada para CTU de fronteira (correspondente ao parâmetro FQT_LV) pode ser selecionado de forma adaptativa com base no id temporal/tipo de fatia, ou decodificado a partir do fluxo de bits. O nível de QT decodificado a força pode ser extraído do cabeçalho de fatia, SPS ou PPS. A CTU/CU de fronteira é particionada em BT forçada somente após a partição de QT forçada. Quando as amostras inferiores direitas dos nós folhas estiverem dentro da fronteira, a divisão forçada será encerrada. Partições adicionais são feitas com base no sinalizador de divisão decodificado.
[00129] Em outras palavras, de acordo com uma primeira implementação, no decodificador, se uma CTU estiver localizada na fronteira de fatia/imagem, o particionamento de árvore binária é realizado sem indicador da partição de árvore binária (sinalizador) e/ou indicador do tipo de partição de árvore binária (indicação se BT ou QT deve ser realizada). O particionamento binário é encerrado quando a amostra inferior direita do nó folha está localizada dentro da fronteira de fatia/imagem (ou seja, não cruza a fronteira de imagem).
[00130] Assim, em vez de um particionamento de fronteira de QT forçado, é introduzido a BT forçada para CTUs de fronteira. A BT horizontal forçada para a fronteira inferior e a BT vertical forçada para a fronteira direita são implementadas. Para a fronteira de canto inferior direita, a QT forçada será usada até que a CU atual não precise mais ser particionada (desde que o tamanho mínimo seja atingido) ou a CU atual esteja no fundo ou a fronteira direita.
[00131] Em outra implementação da presente divulgação, uma combinação de particionamento de QT forçado e BT forçado também é possível. Consequentemente, o particionamento de BT forçado é feito somente após um certo número de níveis de QT forçada. Para a combinação de particionamento de QT forçado e de BT forçado, os níveis de QT forçada podem ser adaptativamente selecionados pelo ID temporal ou tipo de fatia. Alternativamente, os níveis de QT forçada podem ser ajustados por custos e incluídos no fluxo de bits para indicar quantos níveis de QT forçada são usados para o decodificador.
[00132] Mesmo mais flexibilidade é conseguida quando as CTUs de fronteira são particionadas por otimização de RD, e apenas os blocos restantes localizados na fronteira de quadro (ou seja, CUs incompletas que estão localizadas parcialmente dentro da imagem e parcialmente fora da imagem) podem usar a partição de BT forçada proposta ou uma combinação de partição de QT forçada e BT forçada, conforme descrito acima.
[00133] O particionamento como descrito até agora pode ser empregado na codificação de imagens estáticas ou de vídeo. Em particular, o particionamento pode ser empregado no codificador e no decodificador que são mostrados nas Figuras 1 e 2, na unidade de divisão 110 e na unidade de divisão 250, respectivamente.
[00134] Por conseguinte, a presente divulgação também fornece um aparelho para codificar uma imagem de uma sequência de vídeo compreendendo: o aparelho (unidade de divisão) 110 para dividir uma porção de imagem em unidades de codificação de acordo com qualquer um dos exemplos descritos acima, uma unidade de codificação de imagem 120- 145, 160-195 configurada para codificar as unidades de codificação, e uma unidade de formação de fluxo de bits 150 configurada para gerar um fluxo de bits incluindo as unidades de codificação codificadas e uma informação de particionamento indicando como as unidades de árvore de codificação são particionadas.
[00135] O codificador pode ainda compreender uma unidade de otimização de distorção de taxa (não mostrada na Figura 1) configurada para determinar o particionamento hierárquico da porção de fronteira de acordo com a otimização de distorção de taxa para qualquer um dos níveis de particionamento exceto o nível mais profundo. A unidade de otimização de RD pode realizar codificação usando diferentes definições de codificador em relação ao particionamento e selecionar a definição que resulta na função de custo mínimo. A função de custo pode ser uma taxa mínima para o nível de distorção ou similaridade entre a predição e o bloco original a ser codificado ou semelhantes.
[00136] Além disso, é fornecido um aparelho para decodificar uma imagem de uma sequência de vídeo compreendendo: o aparelho 250 para determinar divisão de uma porção de imagem a ser decodificada em unidades de codificação como descrito acima, um analisador de fluxo de bits 250 para analisar um fluxo de bits incluindo as unidades de codificação codificadas e uma informação de particionamento indicando como as unidades de árvore de codificação são particionadas e baseada na divisão determinada da porção de imagem, e uma unidade de decodificação de imagem 225-240, 260-295 para decodificar as unidades de codificação.
[00137] Note que a divisão e a análise são realizadas recursivamente juntas: a análise inclui a separação do fluxo de bits para a CU atual da informação de controle necessária e a divisão usa a informação analisada e/ou o conhecimento semântico para derivar os locais, tamanhos e dados de CU. Em particular, o analisador pode entregar o sinalizador de divisão e, com base no mesmo, o divisor ou adicionalmente divide a CU atual ou mantém seu tamanho. Dependendo do sinalizador de divisão, também o analisador ou adicionalmente analisa a informação de divisão para as CUs de uma profundidade adicional ou analisa a informação de divisão para outras CUs da mesma profundidade, ou analisa os dados a serem decodificados para as CUs. Além disso, o divisor é configurado para particionar a porção de fronteira como descrito acima, mesmo sem sinalização de fluxo de bits adicional de acordo com as regras de particionamento forçado.
[00138] Por outras palavras, o codificador e/ou o descodificador podem ambos empregar divisão da porção de fronteira em unidades de codificação como uma divisão predefinida. Em seguida, a informação de particionamento no fluxo de bits não está relacionada à divisão da porção de fronteira no geral. Esse é o caso quando a fronteira é dividida em uma maneira predefinida, que ainda pode incluir derivar a divisão com base em outras definições de codificador, como tipo de imagem/ID temporal/tipo de fatia.
[00139] Alternativamente, o codificador e/ou o decodificador podem ser ainda configurados para particionar a porção de fronteira por divisão de árvore quádrupla em N níveis mais rasos, N sendo um número inteiro maior que ou igual a zero e menor que o número de níveis de hierarquia de particionamento; e partição de porção de fronteira por divisão de árvore binária nos níveis de hierarquia de particionamento restantes, e a informação de particionamento inclui indicação de N. A informação de particionamento pode ainda incluir sinalizador de divisão para indicar se as CTUs/CUs de porção de fronteira devem ou não ser divididas e/ou em que tipo de divisão (pode incluir árvore binária ou árvore quádrupla e/ou outras opções). O sinalizador de divisão pode ser sinalizado para todas as partições (CUs) ou apenas para aquelas que não estão localizadas na fronteira em seu nível hierárquico.
[00140] O codificador e/ou decodificador pode ser implementado (incorporado) em um chip ou por meio de software. No entanto, o codificador e/ou decodificador também pode ser implementado em uma pluralidade de componentes de hardware e software.
[00141] Acima, dois tipos de divisão foram discutidos principalmente: a divisão de árvore quádrupla e a divisão de árvore binária. No entanto, o particionamento forçado de fronteira baseado em custo ou predefinido abordado fornecido pela presente divulgação também é adequado para outra estrutura de partição forçada, não apenas QT forçada ou BT forçada.
[00142] Acima, principalmente o caso foi descrito, no qual uma CU mais profunda na divisão forçada da porção de fronteira é uma CU retangular, mas não CU quadrada, ou seja, uma CU com um lado mais longo que o outro lado.
[00143] No entanto, em geral, a porção de fronteira pode ser particionada por divisão de árvore binária pelo menos em um dos níveis de particionamento nos quais uma unidade de codificação de fronteira permanece não totalmente dentro da porção de fronteira. Em outras palavras, de acordo com a presente divulgação, o aparelho para dividir uma porção de imagem em unidades de codificação pode incluir um circuito de processamento que, em operação subdivide a porção de imagem em um número inteiro de unidades de árvore de codificação com um tamanho predeterminado e uma porção de fronteira com um tamanho menor que o tamanho predeterminado em pelo menos uma primeira direção, que é ou direção horizontal ou vertical, e particiona a porção de fronteira hierarquicamente em unidades de codificação incluindo uma unidade de codificação com tamanhos diferentes nas respectivas direções horizontal e vertical, a unidade de codificação sendo parcialmente localizada na porção de fronteira e parcialmente fora da porção de imagem. Em particular, a divisão de árvore binária pode ser usada para quaisquer CUs de fronteira.
[00144] Note que a porção de fronteira mostrada na Figura 7 inclui várias CTUs. As modalidades e implementações exemplares acima foram descritas para particionar uma CTU. Isso ocorre porque mesmo que apenas uma das CTUs (incompletas) na porção de fronteira seja particionada como descrito acima, isso pode ser vantajoso e levar a melhores resultados em termos de eficiência e/ou complexidade de codificação. No entanto, mais de uma CTU da porção de fronteira pode ser particionada como descrito acima. O particionamento pode ser realizado sequencialmente CTU por CTU. Em algumas implementações, pode ser benéfico realizar particionamento para diferentes CTUs em paralelo. O processamento paralelo pode reduzir o atraso da codificação/decodificação, se empregado pelo codificador/decodificador, respectivamente.
[00145] Em outras palavras, pode ser vantajoso aplicar o particionamento descrito acima a todas as CTUs da porção de fronteira. Por outro lado, a presente divulgação não se limita a isso e o particionamento pode ser aplicado a uma ou mais CTUs de fronteira. As CTUs restantes podem ser divididas por qualquer outra partição, por exemplo, apenas QT ou similar.
[00146] Um método correspondente para particionamento também é fornecido. Os aparelhos e métodos de codificação e decodificação correspondentes que empregam esse particionamento são ainda fornecidos.
[00147] A presente divulgação pode ser implementada em um aparelho. Esse aparelho pode ser uma combinação de software e hardware. Por exemplo, a filtragem intrapredição e de desbloqueio pode ser realizada por um chip, como um processador de propósito geral, ou um processador de sinal digital (DSP), ou uma matriz de portas de campo programável (FPGA), ou semelhantes. No entanto, a presente invenção não se limita à implementação em um hardware programável. Pode ser implementada em um circuito integrado de aplicação específica (ASIC) ou por uma combinação dos componentes de hardware mencionados acima.
[00148] A determinação de filtragem intrapredição e de desbloqueio também pode ser implementada por instruções de programa armazenadas em um meio legível por computador que, quando executadas por um computador, realizam os passos de um método como descrito acima. O meio legível por computador pode ser qualquer meio no qual o programa esteja armazenado, como um DVD, CD, unidade USB (flash), disco rígido, armazenamento do servidor disponível via rede, etc.
[00149] O codificador e/ou decodificador pode ser implementado em vários dispositivos, incluindo um aparelho de TV, decodificador, PC, tablet, telefone inteligente ou semelhantes. Pode ser um aplicativo de software que implementa os passos do método.
[00150] Resumindo, a presente divulgação refere-se ao particionamento de uma imagem ou uma fatia de imagem. Em particular, a imagem ou fatia de imagem é dividida em um número inteiro de unidades de árvore de codificação nas direções vertical e horizontal. A porção de fronteira restante é então dividida pelo menos em parte, de modo que o nível de particionamento mais profundo seja resultado do particionamento binário, ou seja, inclui uma unidade de codificação que é mais longa de um lado que do outro lado.
O lado mais longo é paralelo ou concorrente à imagem ou à fronteira de fatia de imagem.

Claims (18)

REIVINDICAÇÕES
1. Aparelho para dividir uma porção de imagem em unidades de codificação caracterizado pelo fato de que inclui um circuito de processamento que, em operação: subdivide a porção de imagem em um número inteiro de unidades de árvore de codificação com um tamanho predeterminado e uma porção de fronteira com um tamanho menor que o tamanho predeterminado em pelo menos uma primeira direção, que é ou direção horizontal ou vertical, particiona a porção de fronteira hierarquicamente em unidades de codificação incluindo uma unidade de codificação mais profunda com tamanhos diferentes nas respectivas direções horizontal e vertical, a unidade de codificação mais profunda sendo menor na primeira direção.
2. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que o circuito de processamento é configurado para particionar a porção de fronteira por divisão de árvore binária pelo menos no nível de particionamento mais profundo.
3. Aparelho, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que o circuito de processamento é configurado para particionar a porção de fronteira também por divisão de árvore quádrupla.
4. Aparelho, de acordo com a reivindicação 3, caracterizado pelo fato de que o circuito de processamento é configurado para: particionar a porção de fronteira por divisão de árvore quádrupla em N níveis mais rasos, N sendo um número inteiro maior que ou igual a zero e menor que o número de níveis de hierarquia de particionamento; e particionar a porção de fronteira por divisão de árvore binária nos níveis de hierarquia de particionamento restantes.
5. Aparelho, de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que o circuito de processamento, em operação, particiona a porção de fronteira até que a unidade de codificação de nível mais profundo permaneça inteiramente dentro da porção de fronteira.
6. Aparelho, de acordo com qualquer uma das reivindicações 1 a 5, caracterizado pelo fato de que o circuito de processamento, em operação, particiona a porção de fronteira por divisão de árvore binária na direção horizontal e vertical.
7. Aparelho, de acordo com qualquer uma das reivindicações 1 a 6, caracterizado pelo fato de que o circuito de processamento, em operação, particiona em cada nível hierárquico uma porção de canto da porção de fronteira por divisão de árvore quádrupla.
8. Aparelho, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que o circuito de processamento é configurado para particionar a porção de fronteira em todos os níveis de particionamento por divisão de árvore binária.
9. Aparelho para codificar uma imagem de uma sequência de vídeo caracterizado pelo fato de que compreende: o aparelho para dividir uma porção de imagem em unidades de codificação conforme definido em qualquer uma das reivindicações 1 a 8; uma unidade de codificação de imagem configurada para codificar as unidades de codificação; e uma unidade de formação de fluxo de bits configurada para gerar um fluxo de bits incluindo as unidades de codificação codificadas e uma informação de particionamento indicando como as unidades de árvore de codificação são particionadas.
10. Codificador, de acordo com a reivindicação 9, caracterizado pelo fato de que compreende uma unidade de otimização de distorção de taxa configurada para determinar o particionamento hierárquico da porção de fronteira de acordo com a otimização de distorção de taxa para qualquer um dos níveis de particionamento exceto o nível mais profundo.
11. Aparelho para decodificar uma imagem de uma sequência de vídeo caracterizado pelo fato de que compreende: o aparelho para determinar divisão de uma porção de imagem a ser decodificada em unidades de codificação conforme definido em qualquer uma das reivindicações 1 a 8; um analisador de fluxo de bits para analisar um fluxo de bits incluindo as unidades de codificação codificadas e uma informação de particionamento indicando como as unidades de árvore de codificação são particionadas e baseada na divisão determinada da porção de imagem; uma unidade de decodificação de imagem para decodificar as unidades de codificação codificadas.
12. Aparelho, de acordo com qualquer uma das reivindicações 9 a 11, caracterizado pelo fato de que a divisão da porção de fronteira em unidades de codificação é uma divisão predefinida e a informação de particionamento não se refere à divisão da porção de fronteira.
13. Aparelho, de acordo com qualquer uma das reivindicações 9 a 11, caracterizado pelo fato de que: o circuito de processamento é configurado para particionar a porção de fronteira por divisão de árvore quádrupla em N níveis mais rasos, N sendo um número inteiro maior que ou igual a zero e menor que o número de níveis de hierarquia de particionamento; e particionar porção de fronteira por divisão de árvore binária nos níveis de hierarquia de particionamento restantes; a informação de particionamento inclui N ou N é derivado com base no tipo de predição aplicado para codificar a imagem que está sendo processada.
14. Método para dividir uma porção de imagem em unidades de codificação caracterizado pelo fato de que inclui: subdividir a porção de imagem em um número inteiro de unidades de árvore de codificação com um tamanho predeterminado e uma porção de fronteira com um tamanho menor que o tamanho predeterminado em pelo menos uma primeira direção que seja ou a direção horizontal ou vertical, particionar a porção de fronteira hierarquicamente em unidades de codificação incluindo uma unidade de codificação mais profunda com tamanhos diferentes nas respectivas direções horizontal e vertical, a unidade de codificação mais profunda sendo menor na primeira direção.
15. Método, de acordo com a reivindicação 14, caracterizado pelo fato de que a partição da porção de fronteira ainda compreende os passos de: iniciar com um nível de particionamento atual sendo o nível de particionamento mais raso, dividir sequencialmente a porção de fronteira em unidades de codificação do nível de particionamento atual,
até que uma unidade de codificação do nível de particionamento atual caia inteiramente dentro da porção de fronteira; assim que a unidade de codificação do nível de particionamento atual não cair dentro da porção de fronteira, aumentar o nível de particionamento e adicionalmente particionar a referida unidade de codificação, em que uma particionamento de árvore quádrupla é usado para N níveis de particionamento mais rasos e particionamento de árvore binária é usado de outro modo, N sendo um número inteiro maior ou igual a zero e menor que o número de níveis da hierarquia de particionamento.
16. Método para codificar uma imagem de uma sequência de vídeo caracterizado pelo fato de que compreende: dividir uma porção de imagem em unidades de codificação conforme definido na reivindicação 14 ou 15; codificar as unidades de codificação; e gerar um fluxo de bits incluindo as unidades de codificação codificadas e uma informação de particionamento indicando como as unidades de árvore de codificação são particionadas.
17. Método para decodificar uma imagem de uma sequência de vídeo caracterizado pelo fato de que compreende: determinar divisão de uma porção de imagem a ser decodificada em unidades de codificação conforme definido na reivindicação 14 ou 15; analisar um fluxo de bits incluindo as unidades de codificação codificadas e uma informação de particionamento indicando como as unidades de árvore de codificação são particionadas e baseada na divisão determinada da porção de imagem; decodificar as unidades de codificação codificadas.
18. Meio legível por computador armazenando instruções, caracterizado pelo fato de que, quando executadas por um processador, fazem com que o processador execute o método conforme definido em qualquer uma das reivindicações 14 ou
17.
BR112020000166-0A 2017-07-04 2017-07-04 aparelho para dividir uma porção de imagem melhorando a partição forçada de fronteira, codificador e decodificador compreendendo os mesmos e métodos correspondentes BR112020000166A2 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2017/066700 WO2019007493A1 (en) 2017-07-04 2017-07-04 ENHANCEMENT OF FORCED LIMIT PARTITION

Publications (1)

Publication Number Publication Date
BR112020000166A2 true BR112020000166A2 (pt) 2020-07-14

Family

ID=59285213

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020000166-0A BR112020000166A2 (pt) 2017-07-04 2017-07-04 aparelho para dividir uma porção de imagem melhorando a partição forçada de fronteira, codificador e decodificador compreendendo os mesmos e métodos correspondentes

Country Status (19)

Country Link
US (2) US11272220B2 (pt)
EP (2) EP4358512A1 (pt)
JP (3) JP6977138B2 (pt)
KR (3) KR20230144124A (pt)
CN (3) CN114205630B (pt)
AU (1) AU2017422536C1 (pt)
BR (1) BR112020000166A2 (pt)
CA (1) CA3068762C (pt)
DK (1) DK3649781T3 (pt)
ES (1) ES2972582T3 (pt)
FI (1) FI3649781T3 (pt)
HU (1) HUE065470T2 (pt)
MY (1) MY197897A (pt)
PL (1) PL3649781T3 (pt)
PT (1) PT3649781T (pt)
SG (1) SG11201913523XA (pt)
UA (1) UA126480C2 (pt)
WO (1) WO2019007493A1 (pt)
ZA (1) ZA202000188B (pt)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111480343A (zh) * 2017-12-14 2020-07-31 交互数字Vc控股公司 用于编码图片块的方法和装置
KR20200112945A (ko) 2018-01-29 2020-10-05 인터디지털 브이씨 홀딩스 인코포레이티드 재구성된 픽처의 정제를 갖는 인코딩 및 디코딩
US11128871B2 (en) 2018-04-25 2021-09-21 Panasonic Intellectual Property Corporation Of America Encoder for adaptively determining information related to splitting based on characteristics of neighboring samples
BR112020025569A2 (pt) 2018-09-18 2021-03-23 Huawei Technologies Co., Ltd. codificador de vídeo, decodificador de vídeo e métodos correspondentes
WO2020057530A1 (en) 2018-09-18 2020-03-26 Huawei Technologies Co., Ltd. Coding method, device, system
HRP20230702T1 (hr) 2019-01-09 2023-10-13 Huawei Technologies Co., Ltd. Signaliziranje identifikatora podslike kod kodiranja videa
CN117256141A (zh) * 2021-04-13 2023-12-19 抖音视界有限公司 用于编解码树划分的边界处理

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101452713B1 (ko) * 2009-10-30 2014-10-21 삼성전자주식회사 픽처 경계의 부호화 단위를 부호화, 복호화 하는 방법 및 장치
CN106231336B (zh) * 2010-04-13 2020-06-12 Ge视频压缩有限责任公司 解码器、解码方法、编码器以及编码方法
US8494290B2 (en) * 2011-05-05 2013-07-23 Mitsubishi Electric Research Laboratories, Inc. Method for coding pictures using hierarchical transform units
US9912944B2 (en) * 2012-04-16 2018-03-06 Qualcomm Incorporated Simplified non-square quadtree transforms for video coding
PT2942958T (pt) * 2013-01-07 2018-06-15 Nec Corp Sinalização de subdivisão de unidade de codificação para blocos codificados por pcm
JP6365540B2 (ja) * 2013-07-17 2018-08-01 ソニー株式会社 画像処理装置および方法
US10070070B2 (en) * 2014-05-28 2018-09-04 Mediatek Inc. Video processing apparatus with transform unit size selection, mode information unit size selection and/or picture width/height decision, and related video processing method thereof
WO2016090568A1 (en) 2014-12-10 2016-06-16 Mediatek Singapore Pte. Ltd. Binary tree block partitioning structure
US9591325B2 (en) * 2015-01-27 2017-03-07 Microsoft Technology Licensing, Llc Special case handling for merged chroma blocks in intra block copy prediction mode
US10003807B2 (en) * 2015-06-22 2018-06-19 Cisco Technology, Inc. Block-based video coding using a mixture of square and rectangular blocks
US20170078703A1 (en) * 2015-09-10 2017-03-16 Nokia Technologies Oy Apparatus, a method and a computer program for video coding and decoding
US10212444B2 (en) * 2016-01-15 2019-02-19 Qualcomm Incorporated Multi-type-tree framework for video coding
EP3430808A4 (en) * 2016-03-16 2020-01-15 Mediatek Inc. METHOD AND DEVICE FOR PROCESSING VIDEO DATA WITH RESTRICTED BLOCK SIZE IN VIDEO CODING
US10284845B2 (en) * 2016-05-25 2019-05-07 Arris Enterprises Llc JVET quadtree plus binary tree (QTBT) structure with multiple asymmetrical partitioning
CN114339225B (zh) * 2016-09-05 2024-06-04 罗斯德尔动力有限责任公司 图像编码和解码装置及比特流存储介质和发送装置
MX2019004052A (es) 2016-10-10 2019-06-24 Samsung Electronics Co Ltd Metodo y dispositivo para codificar o decodificar una unidad de codificacion de contorno de imagen.
US11057624B2 (en) * 2016-10-14 2021-07-06 Industry Academy Cooperation Foundation Of Sejong University Image encoding method/device, image decoding method/device, and recording medium in which bitstream is stored
EP3383043A1 (en) * 2017-03-27 2018-10-03 Thomson Licensing Methods and apparatus for picture encoding and decoding
EP3383045A1 (en) * 2017-03-27 2018-10-03 Thomson Licensing Multiple splits prioritizing for fast encoding

Also Published As

Publication number Publication date
EP3649781B1 (en) 2024-01-17
CN118200610A (zh) 2024-06-14
US20200145698A1 (en) 2020-05-07
AU2017422536C1 (en) 2023-08-10
KR20200020914A (ko) 2020-02-26
AU2017422536A1 (en) 2020-01-30
EP4358512A1 (en) 2024-04-24
JP2020526145A (ja) 2020-08-27
WO2019007493A1 (en) 2019-01-10
CA3068762C (en) 2023-10-03
CA3068762A1 (en) 2019-01-10
SG11201913523XA (en) 2020-01-30
EP3649781A1 (en) 2020-05-13
US20220217420A1 (en) 2022-07-07
KR102586674B1 (ko) 2023-10-06
HUE065470T2 (hu) 2024-05-28
CN114205630B (zh) 2022-06-28
PL3649781T3 (pl) 2024-04-29
KR20230144124A (ko) 2023-10-13
JP6977138B2 (ja) 2021-12-08
FI3649781T3 (fi) 2024-03-13
US11272220B2 (en) 2022-03-08
AU2017422536B2 (en) 2023-04-13
JP7366980B2 (ja) 2023-10-23
PT3649781T (pt) 2024-03-07
UA126480C2 (uk) 2022-10-12
ES2972582T3 (es) 2024-06-13
CN110999295B (zh) 2024-03-26
KR20220044388A (ko) 2022-04-07
CN114205630A (zh) 2022-03-18
JP2023174795A (ja) 2023-12-08
DK3649781T3 (da) 2024-03-11
MY197897A (en) 2023-07-24
KR102381198B1 (ko) 2022-03-30
AU2017422536A8 (en) 2020-02-06
ZA202000188B (en) 2021-01-27
CN110999295A (zh) 2020-04-10
JP2022022227A (ja) 2022-02-03

Similar Documents

Publication Publication Date Title
US10721469B2 (en) Line buffer reduction for adaptive loop filtering in video coding
US10778974B2 (en) Adaptive loop filter with enhanced classification methods
KR102014618B1 (ko) 2진 트리 블록 분할을 사용한 비디오 코딩 방법
BR112020000166A2 (pt) aparelho para dividir uma porção de imagem melhorando a partição forçada de fronteira, codificador e decodificador compreendendo os mesmos e métodos correspondentes
KR102515610B1 (ko) 영상 부호화 또는 복호화하기 위한 장치 및 방법
BR112020019715A2 (pt) combinação de intrapredição dependente de posição estendida com modos angulares
BR112016027428B1 (pt) Inicialização de paleta de preditor em codificação de vídeo com base em paleta
BR112016027420B1 (pt) Codificação de sequências de execução com evasão em codificação de vídeo baseada em paleta
US11632575B2 (en) Binarization of partitioning related to extended quadtree
BR102013001124B1 (pt) Método de decodificar um fluxo de bits de vídeo codificado, codificador para codificar um fluxo de bits de vídeo e mídia legível por processador não transitória
US11228761B2 (en) Border handling for extended quadtree partitions
KR20230010058A (ko) 영상 부호화 또는 복호화하기 위한 장치 및 방법
KR101407755B1 (ko) 인코딩 및 디코딩을 위한 멀티레벨 유의성 맵
BR112020023927A2 (pt) método e aparelho para divisão de uma imagem, e um método e aparelho para codificação ou decodificação de uma imagem
BR112020020046A2 (pt) Codificação e decodificação de um vídeo

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]
B06W Patent application suspended after preliminary examination (for patents with searches from other patent authorities) chapter 6.23 patent gazette]