BR122022004363B1 - Método para codificar imagens pela derivação de parâmetros de um modelo linear, método para decodificar imagens pela derivação de parâmetros de um modelo linear, dispositivo para codificar imagens, dispositivo para decodificar imagens e suporte legível por computador não-transitório - Google Patents

Método para codificar imagens pela derivação de parâmetros de um modelo linear, método para decodificar imagens pela derivação de parâmetros de um modelo linear, dispositivo para codificar imagens, dispositivo para decodificar imagens e suporte legível por computador não-transitório Download PDF

Info

Publication number
BR122022004363B1
BR122022004363B1 BR122022004363-1A BR122022004363A BR122022004363B1 BR 122022004363 B1 BR122022004363 B1 BR 122022004363B1 BR 122022004363 A BR122022004363 A BR 122022004363A BR 122022004363 B1 BR122022004363 B1 BR 122022004363B1
Authority
BR
Brazil
Prior art keywords
linear model
sample
component
chroma
slope
Prior art date
Application number
BR122022004363-1A
Other languages
English (en)
Inventor
Patrice Onno
Christophe Gisquet
Guillaume Laroche
Jonathan Taquet
Original Assignee
Canon Kabushiki Kaisha
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 Canon Kabushiki Kaisha filed Critical Canon Kabushiki Kaisha
Publication of BR122022004363B1 publication Critical patent/BR122022004363B1/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • 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

Abstract

A presente invenção refere-se à predição de componentes cruzados e métodos para derivação de um modelo linear para obter uma amostra de primeira componente para um bloco de primeira componente a partir de uma amostra de segunda componente reconstruída associada de um bloco de segunda componente no mesmo quadro, o método compreendendo determinar os parâmetros de uma equação linear representando uma linha reta que passa por dois pontos, sendo cada ponto definido por duas variáveis, a primeira variável correspondendo a um valor de amostra de segunda componente, a segunda variável correspondendo a um valor de amostra de primeira componente, com base em amostras reconstruídas tanto da primeira componente quanto da segunda componente; e derivar o modelo linear definido pelos parâmetros de linha reta; em que a dita determinação dos parâmetros usa aritmética de inteiros.

Description

“Dividido do BR112020017153-0, depositado em 21/02/2019”. Campo da Invenção
[0001] A presente invenção refere-se à codificação ou decodificação de blocos de uma determinada componente de vídeo, em particular a predição intra de tais blocos de componentes ou à obtenção de amostras desses blocos. A invenção encontra aplicações em obter blocos de uma componente, tipicamente blocos de uma componente croma, de dados de vídeo de amostras de outra componente, tipicamente amostras de luma.
Fundamentos da Invenção
[0002] A codificação preditiva de dados de vídeo é baseada na divisão de quadros em blocos de pixels. Para cada bloco de pixels, um bloco preditor é pesquisado nos dados disponíveis. O bloco preditor pode ser um bloco em um quadro de referência diferente do atual nos modos de codificação INTER ou gerado a partir de pixels vizinhos no quadro atual nos modos de codificação INTRA. Diferentes modos de codificação são definidos de acordo com diferentes maneiras de determinar o bloco preditor. O resultado da codificação é uma sinalização do bloco preditor e um bloco residual que consiste na diferença entre o bloco a ser codificado e o bloco preditor.
[0003] Em relação aos modos de codificação INTRA, geralmente são propostos vários modos, como o modo de corrente contínua (CC), modo planar e modo angulares. Cada um deles procura predizer amostras de um bloco usando amostras de fronteira previamente decodificadas a partir de blocos espacialmente vizinhos.
[0004] A codificação pode ser realizada para cada componente que forma os pixels dos dados de vídeo. Embora a representação RGB (para Vermelho-Verde-Azul) seja bem conhecida, a representação YUV é preferencialmente usada para a codificação para reduzir a redundância entre canais. De acordo com esses modos de codificação, um bloco de pixels pode ser considerado como composto por vários, tipicamente três blocos de componentes. Um bloco de pixels RGB é composto por um bloco de componente R contendo os valores da componente R dos pixels do bloco, um bloco de componente G contendo os valores da componente G desses pixels, um bloco de componente B contendo os valores da componente B desses pixels. Da mesma forma, um bloco de pixels YUV é composto por um bloco de componente Y (luma), um bloca componente U (croma) e um bloca componente V (também croma). Outro exemplo é YCbCr, onde Cb e Cr também são conhecidos coma componentes croma. No entanto, a correlação entre componentes (também conhecida como de componentes cruzados) ainda é observada localmente.
[0005] Para melhorar a eficiência da compactação, o uso da Predição de Componentes Cruzados (CCP) foi estudado no estado desta técnica. A principal aplicação de CCP diz respeito à predição de luma para croma. Isso significa que as amostras de luma já foram codificadas e reconstruídas a partir de dados codificados (como o decodificador faz) e que o croma é predito a partir de luma. No entanto, variantes usam CCP para a predição de croma para croma ou, mais geralmente, para a predição de primeira componente para a segunda componente (incluindo RGB).
[0006] A Predição de Componentes Cruzados pode ser aplicada diretamente a um bloco de pixels de croma ou a um bloco de croma residual (significando a diferença entre um bloco de croma e um preditor de bloco de croma).
[0007] O modo Modelo Linear (LM) usa um modelo linear para predizer o croma a partir de luma como um modo de predição intra de croma, baseando-se em um ou dois parâmetros, inclinação (α) e deslocamento (β), a serem determinados. O preditor intra de croma é assim derivado de amostras de luma reconstruídas de um bloco de luma atual usando o modelo linear com os parâmetros.
[0008] A linearidade, ou seja, os parâmetros α e β, é derivada das amostras causais reconstruídas, em particular de um conjunto de amostras de croma vizinhas compreendendo amostras de croma reconstruídas vizinhas ao bloco de croma atual para predição e de um conjunto de amostras de luma vizinhas compreendendo amostras de luma vizinhas ao bloco de luma atual.
[0009] Especificamente, para um bloco de croma N x N, os N vizinhos da linha acima e os N vizinhos da coluna esquerda são usados para formar o conjunto de amostras de croma vizinhas para derivação.
[0010] O conjunto de amostras de luma vizinhas também é composto por N amostras vizinhas logo acima do bloco de luma correspondente e N amostras vizinhas no lado esquerdo do bloco de luma.
[0011] Ele é conhecido por reduzir o tamanho dos dados de vídeo para codificar sem degradação significativa da renderização visual, sub-amostrando os componentes croma. Os modos de subamostragem conhecidos são identificados como 4:1:1, 4:2:2, 4:2:0.
[0012] Na situação em que os dados de vídeo de croma são subamostrados, o bloco de luma correspondente ao bloco N x N é maior que N x N. Nesse caso, o conjunto de amostras de luma vizinhas é submetido a uma redução de resolução para corresponder à resolução de croma. O preditor intra de croma para predizer as amostras de croma no bloco de croma N x N atual deve ser gerado usando o modelo linear com um ou mais parâmetros α e β derivados e as amostras de luma reconstruídas do bloco de luma atual que tiveram previamente a resolução reduzida para corresponder à resolução de croma. A redução de resolução das amostras de luma reconstruídas para a resolução de croma torna possível recuperar o mesmo número de amostras que as amostras de croma para formar tanto o conjunto de amostras de luma quanto o preditor intra de croma.
[0013] O preditor intra de croma é assim subtraído do bloco de croma atual para obter um bloco de croma residual que é codificado no codificador. Por outro lado, no decodificador, o preditor intra de croma é adicionado ao bloco de croma residual recebido de modo a recuperar o bloco de croma, também conhecido como reconstrução do bloco decodificado. Isso também pode envolver recorte para resultados da adição fora da faixa de amostra.
[0014] Às vezes, o bloco de croma residual é desprezível e, portanto, não é considerado durante a codificação. Nesse caso, o preditor intra de croma mencionado acima é usado como o próprio bloco de croma. Como uma consequência, o modo LM acima permite obter uma amostra para um bloco atual de uma determinada componente a partir de uma amostra reconstruída associada (ou seja, colocada ou correspondente) de um bloco de outra componente no mesmo quadro usando um modelo linear com um ou mais parâmetros. A amostra é obtida usando o modelo linear com um ou mais parâmetros derivados e as amostras reconstruídas associadas no bloco do outra componente. Se necessário, o bloco da outra componente é feito de amostras com resolução reduzida para corresponder à resolução de bloco da componente atual. Enquanto o bloco da componente atual é tipicamente um bloco de croma e o bloco da outra componente um bloco de luma, esse pode não ser o caso. Por uma questão de clareza e simplicidade, os exemplos dados aqui focam na predição de um bloco de croma a partir de um bloco de luma, deve ficar claro que o mecanismo descrito pode se aplicar a qualquer predição de componente a partir de outra componente.
[0015] O Modelo de Colaboração Conjunta (JEM) da Equipe de Colaboração Conjunta em Codificação de Vídeo (JVET) adiciona seis modos de modelo linear de componentes cruzados (luma para croma) aos modos convencionais de predição intra já conhecidos. Todos esses modos competem entre si para predizer ou gerar os blocos de croma, sendo a seleção geralmente feita com base em um critério de taxa - distorção na extremidade do codificador.
[0016] Os seis modos de modelo linear de componentes cruzados (luma para croma) diferem entre si por diferentes esquemas de redução de resolução usados para reduzir a resolução das amostras de luma reconstruídas e / ou por diferentes conjuntos de amostras dos quais os parâmetros α e β são derivados.
[0017] Por exemplo, os conjuntos de amostras podem ser feitos das duas linhas (isto é, linhas e colunas) de amostras vizinhas ao bloco de luma ou croma atual, essas linhas sendo paralelas e imediatamente adjacentes a cada uma das fronteiras superior e / ou esquerda do bloco de luma ou croma atual na resolução de croma. Esse conjunto de amostras exemplificativo é descrito na publicação US 9.736.487.
[0018] Outros conjuntos de amostras exemplificativos também são descritos nas publicações US 9.288.500 e US 9.462.273.
[0019] Os esquemas de redução de resolução usados em JEM incluem um filtro de 6 derivações que determina uma amostra de luma reconstruída de resolução reduzida a partir de seis amostras de luma reconstruídas, mas também três filtros de 2 derivações que selecionam as amostras superior direita e inferior direita dentre as seis amostras de luma reconstruídas, ou as amostras inferior e inferior direita, ou as amostras superior e superior direita, e um filtro de 4 derivações que seleciona as amostras superior, superior direita, inferior e inferior direita das seis amostras de luma reconstruídas.
Sumário da Invenção
[0020] JEM é complexo em termos de processamento. Por exemplo, ele requer uma derivação complexa dos parâmetros de modelo linear para o cálculo das amostras de blocos preditores de croma.
[0021] A presente invenção foi concebida para abordar uma ou mais das preocupações anteriores. Trata-se de um método aprimorado para obter uma amostra de croma para um bloco de croma atual, possivelmente através de predição intra de croma.
[0022] De acordo com um primeiro aspecto da presente invenção, é fornecido um método de acordo com a reivindicação 1.
[0023] De acordo com outro aspecto da presente invenção, é fornecido um dispositivo para codificar imagens de acordo com a reivindicação 29.
[0024] De acordo com outro aspecto da presente invenção, é fornecido um dispositivo para decodificar imagens de acordo com a reivindicação 30.
[0025] De acordo com outro aspecto da presente invenção, é fornecido um produto de programa de computador, suporte legível por computador ou programa de computador de acordo com as reivindicações 31 a 33.
[0026] Aspectos adicionais da invenção são fornecidos nas reivindicações dependentes.
[0027] De acordo com um aspecto adicional, é fornecido um método para derivar um modelo linear para obter um valor de amostra de primeira componente a partir de um valor de amostra de segunda componente reconstruída associado, o método compreendendo: obter dois conjuntos a partir de dois ou mais conjuntos, cada conjunto compreendendo um valor de amostra de primeira componente e um valor de amostra de segunda componente a partir de valores de amostras de primeira componente e de segunda componente reconstruída; e derivar o modelo linear com base em uma relação de alterações nos valores de amostras de primeira componente e nos valores de amostras de segunda componente entre os dois conjuntos, de modo que os valores de amostras de primeira componente dos dois conjuntos sejam obtidos a partir dos valores de amostras de segunda componente dos respectivos conjuntos usando o modelo linear derivado.
[0028] Entende-se que o valor de amostra de primeira componente e o valor de amostra de segunda componente reconstruída estão associados um ao outro por meio de uma relação predefinida.
[0029] Adequadamente, a relação predefinida é que eles são colocados com ou correspondem um ao outro. Essa relação colocada ou de correspondência pode ser definida para cada valor de amostra individualmente, ou entre um bloco / grupo de valores de amostras de primeira componente e um bloco / grupo de valores de amostras de segunda componente.
[0030] Adequadamente, a relação predefinida é que eles estão associados com pelo menos um pixel de um bloco atual de pixels a serem processados, por exemplo, eles são valores de amostras colocados ou correspondentes, de pelo menos um pixel a ser processado. Essa relação colocada ou de correspondência pode ser definida para cada valor de amostra individualmente, ou entre um bloco / grupo de valores de amostras e um bloco / grupo de pixels.
[0031] Entende-se também que um processo de redução de resolução ou de aumento de resolução pode ser aplicado a um bloco de valores de amostras de primeira componente ou valores de amostras de segunda componente, de modo que a relação predefinida entre os blocos, ou com pelo menos um pixel de um bloco de pixels atual pode ser estabelecida após a redução de resolução / aumento de resolução.
[0032] Adequadamente, o valor de amostra de primeira componente e o valor de amostra de segunda componente associada são associados a blocos de pixels da mesma imagem ou quadro que deve ser processado. Entende-se que aqui um conjunto compreendendo um valor de amostra de primeira componente e um valor de amostra de segunda componente é um conjunto de valores de amostras de componente do valor de amostra de primeira componente e do valor de amostra de segunda componente. Portanto, o conjunto é de n-tuplas com o valor de amostra de primeira componente e o valor de amostra de segunda componente como seus elementos. Adequadamente, o conjunto é de duas tuplas. Alternativamente, o conjunto é de n-tuplas que tem mais de dois números de elementos (n elementos).
[0033] Adequadamente, os valores de amostras reconstruídos da primeira componente e da segunda componente estão associados a um ou mais blocos vizinhos a um bloco atual a ser processado. Adequadamente, os um ou mais blocos vizinhos ao bloco atual estão acima ou à esquerda do bloco atual.
[0034] Adequadamente, os dois conjuntos obtidos são os conjuntos que compreendem o menor valor de amostra de segunda componente e o maior valor de amostra de segunda componente dentre os valores de amostras de segunda componente nos dois ou mais conjuntos. Adequadamente, os dois conjuntos obtidos são aqueles que compreendem o menor valor de amostra de primeira componente e o maior valor de amostra de primeira componente dentre os valores de amostras de primeira componente nos dois ou mais conjuntos.
[0035] Adequadamente, obter os dois conjuntos compreende: determinar um primeiro grupo de conjuntos compreendendo o menor valor de amostra de segunda componente e o maior valor de amostra de segunda componente dentre os valores de amostras de segunda componente nos dois ou mais conjuntos; determinar um segundo grupo de conjuntos compreendendo o menor valor de amostra de primeira componente e o maior valor de amostra de primeira componente dentre os valores de amostras de primeira componente nos dois ou mais conjuntos; e selecionar os dois conjuntos a partir dos conjuntos do primeiro grupo e do segundo grupo.
[0036] Adequadamente, a seleção dos dois conjuntos a partir dos conjuntos do primeiro grupo e do segundo grupo compreende: selecionar o primeiro grupo se uma diferença entre o menor valor de amostra de segunda componente e o maior valor de amostra de segunda componente for maior do que um diferente entre o menor valor de amostra de primeira componente e maior valor de amostra de primeira componente; e selecionar o segundo grupo, se não for.
[0037] Adequadamente, a seleção dos dois conjuntos a partir dos conjuntos do primeiro grupo e do segundo grupo compreende: determinar as posições dos valores de amostras dos conjuntos do primeiro grupo e do segundo grupo; e selecionar dois conjuntos com base nas posições determinadas dos valores de amostras. Adequadamente, as posições dos valores de amostras são determinadas para os valores de amostras de segunda componente reconstruída em relação a um bloco de valores de amostras de segunda componente reconstruídas que está associado a um bloco dos valores de amostras de primeira componente a serem processados. Adequadamente, as posições dos valores de amostras são determinadas para os valores de amostras de primeira componente reconstruídas em relação a um bloco de valores de amostras de primeira componente reconstruídas a serem processados. Adequadamente, as posições dos valores de amostras são determinadas com base nas posições associadas / colocadas / correspondentes definidas em relação a um bloco de pixels a ser processado.
[0038] Adequadamente, a seleção de dois conjuntos com base nas posições determinadas dos valores de amostras compreende selecionar um conjunto compreendendo um valor de amostra em uma posição predeterminada vizinha a um bloco a ser processado. Adequadamente, a seleção de dois conjuntos com base nas posições determinadas dos valores de amostras compreende: determinar se algum dos conjuntos do primeiro grupo e do segundo grupo compreende um valor de amostra em uma posição predeterminada; e selecionar o conjunto compreendendo o valor de amostra na posição predeterminada como um dos dois conjuntos. Adequadamente, a seleção de dois conjuntos com base nas posições determinadas dos valores de amostras compreende: se um conjunto compreendendo um valor de amostra em uma posição predeterminada não estiver disponível, determinar se algum dos conjuntos do primeiro grupo e do segundo grupo compreende um valor de amostra em outra posição predeterminada; e selecionar o conjunto compreendendo o valor de amostra na outra posição predeterminada como um dos dois conjuntos. Adequadamente, a posição predeterminada ou a outra posição predeterminada é uma posição inferior esquerda ou uma posição superior direita dentre as posições vizinhas a um bloco atual a ser processado.
[0039] Adequadamente, a seleção dos dois conjuntos do primeiro grupo e do segundo grupo de conjuntos compreende comparar as distâncias entre dois conjuntos do primeiro grupo e do segundo grupo de conjuntos, em que as distâncias são definidas em um espaço de valores de amostras de primeira componente e de segunda componente, que é definido por elementos de conjuntos, de modo que cada conjunto dos dois ou mais conjuntos corresponda a uma posição no dito espaço.
[0040] Adequadamente, a seleção dos dois conjuntos compara: determinar se uma distância entre os conjuntos no primeiro grupo é maior do que a distância entre os conjuntos no segundo grupo; e selecionar o primeiro grupo se a distância entre os conjuntos no primeiro grupo for maior do que a distância entre os conjuntos no segundo grupo, e selecionar o segundo grupo, se não for. Adequadamente, a seleção dos dois conjuntos compreende selecionar dois conjuntos com a maior distância entre eles do primeiro grupo e do segundo grupo de conjuntos.
[0041] Adequadamente, a seleção dos dois conjuntos compreende: determinar se os elementos correspondentes dos conjuntos no primeiro grupo têm valores iguais ou diferentes; e selecionar o primeiro grupo se os elementos correspondentes não tiverem os mesmos valores ou tiverem valores diferentes, e selecionar o segundo grupo se os elementos correspondentes tiverem os mesmos valores ou não tiverem valores diferentes. Adequadamente, os elementos correspondentes dos conjuntos são um ou ambos os valores de amostras de primeira componente e os valores de amostras de segunda componente.
[0042] Adequadamente, a seleção dos dois conjuntos compreende: determinar se os elementos correspondentes dos conjuntos no segundo grupo têm valores iguais ou diferentes; e selecionar o segundo grupo se os elementos correspondentes não tiverem os mesmos valores ou tiverem valores diferentes, e selecionar o primeiro grupo se os elementos correspondentes tiverem os mesmos valores ou não tiverem valores diferentes.
[0043] Adequadamente, a seleção dos dois conjuntos compreende: obter uma relação de alterações nos valores de amostras de primeira componente e os valores de amostras de segunda componente dentre os conjuntos do primeiro grupo; determinar se a relação obtida é maior, igual ou menor do que um valor predefinido; e selecionar o primeiro grupo se a relação obtida for maior, igual ou menor do que o valor predefinido, e selecionar o segundo grupo, se não for. Adequadamente, a seleção dos dois conjuntos compreende: obter uma relação de alterações nos valores de amostras de primeira componente e os valores de amostras de segunda componente dentre os conjuntos do segundo grupo; determinar se a relação obtida é maior, igual ou menor do que um valor predefinido; e selecionar o segundo grupo se a relação obtida for maior, igual ou menor do que o valor predefinido, e selecionar o primeiro grupo, se não for.
[0044] Adequadamente, os dois conjuntos obtidos são conjuntos compreendendo valores de amostras de segunda componente a partir de um ou mais blocos vizinhos a um bloco de valores de amostras de segunda componente que está associado a um bloco atual a ser processado, e os dois conjuntos obtidos compreendem selecionar dois conjuntos com base em seus valores de amostras de segunda componente. Adequadamente, os dois conjuntos obtidos são conjuntos compreendendo dois valores de amostras de segunda componente que ocorrem com mais frequência entre os valores de amostras reconstruídas do bloco dos valores de amostras de segunda componente correspondentes.
[0045] Adequadamente, os valores de amostras reconstruídas de segunda componente são divididos em pelo menos dois grupos e, para cada grupo, dois conjuntos são obtidos e um modelo linear é derivado com base nos dois conjuntos obtidos. Adequadamente, se os dois conjuntos obtidos para um grupo tiverem uma relação de alterações nos valores de amostras de primeira componente e nos valores de amostras de segunda componente entre os conjuntos menor ou igual a um valor predefinido, o modelo linear para esse grupo será derivado com base em dois conjuntos obtidos para outro grupo. Adequadamente, se os dois conjuntos obtidos para um grupo tiverem uma relação de alterações nos valores de amostras de primeira componente e nos valores de amostras de segunda componente entre os conjuntos menor ou igual a um valor predefinido, o modelo linear para esse grupo é derivado com base em dois conjuntos que seriam obtidos se todos os valores de amostras reconstruídas de segunda componente estivessem em um único grupo.
[0046] De acordo com um aspecto adicional, é fornecido um método de codificação ou decodificação de uma ou mais imagens em um fluxo de bits ou a partir de um fluxo de bits, o método compreendendo derivar um modelo linear para obter um valor de amostra de primeira componente a partir de um valor de amostra reconstruída de segunda componente associado de acordo com um método do primeiro aspecto da presente invenção.
[0047] Adequadamente, o método compreende ainda selecionar um dentre uma pluralidade de modos de derivação de modelo linear para obter o valor de amostra de primeira componente para um bloco atual da imagem a ser processada, em que a pluralidade de modos de derivação de modelo linear compreende um primeiro modo usando um único modelo linear e um segundo modo usando mais de um modelo linear, e o modelo linear derivado é utilizável no modo de derivação de modelo linear selecionado. Adequadamente, apenas o primeiro modo usa o modelo linear derivado. Alternativamente, apenas o segundo modo usa o modelo linear derivado.
[0048] De acordo com um aspecto adicional, é fornecido um dispositivo para derivar um modelo linear para obter um valor de amostra de primeira componente a partir de um valor de amostra de segunda componente reconstruída associado, o dispositivo configurado para executar o método do primeiro aspecto da presente invenção.
[0049] De acordo com ainda um aspecto adicional, é fornecido um dispositivo para codificar ou decodificar uma ou mais imagens em um fluxo de bits ou a partir de um fluxo de bits, o dispositivo configurado para executar o método do segundo aspecto da presente invenção.
[0050] De acordo com um aspecto ainda mais adicional, é fornecido um método para obter um valor de amostra de primeira componente a partir de um valor de amostra de segunda componente reconstruída associada, o método compreendendo: selecionar um modo de modelo linear a partir de uma pluralidade de modos de modelo linear para obter o valor de amostra de primeira componente; e obter o valor de amostra de primeira componente usando o modo de modelo linear selecionado, em que pelo menos um dentre a pluralidade de modos de modelo linear usa um modelo linear derivado usando um método de derivação de acordo com o primeiro aspecto da presente invenção. Adequadamente, a pluralidade de modos de modelo linear compreende um primeiro modo usando um único modelo linear e um segundo modo usando mais de um modelo linear. Adequadamente, apenas o primeiro modo utiliza o método de derivação de acordo com o primeiro aspecto da presente invenção. Alternativamente, apenas o segundo modo utiliza o método de derivação de acordo com o primeiro aspecto da presente invenção.
[0051] De acordo com ainda um aspecto adicional, é fornecido um dispositivo para obter um valor de amostra de primeira componente a partir de um valor de amostra reconstruída de segunda componente associado, o dispositivo configurado para executar o método do quinto aspecto da presente invenção.
[0052] De acordo com um aspecto ainda adicional, é fornecido um método de codificação de uma ou mais imagens em um fluxo de bits, em que o método compreende obter um valor de amostra de primeira componente a partir de um valor de amostra de segunda componente reconstruída associado de acordo com o quinto aspecto da presente invenção. Adequadamente, o método compreende ainda fornecer, no fluxo de bits, informação indicativa de uma seleção para um modo de modelo linear utilizável para obter a amostra de primeira componente.
[0053] De acordo com ainda um aspecto adicional, é fornecido um método para decodificar uma ou mais imagens de um fluxo de bits, em que o método compreende obter um valor de amostra de primeira componente a partir de um valor de amostra reconstruída de segunda componente associada de acordo com o quinto aspecto da presente invenção. Adequadamente, o método compreende ainda obter, a partir do fluxo de bits, informação indicativa de uma seleção para um modo de modelo linear utilizável para obter a amostra de primeira componente, e a seleção de um modo de modelo linear a partir de uma pluralidade de modos de modelo linear é realizada com base na informação obtida.
[0054] De acordo com ainda um aspecto adicional, é fornecido um dispositivo para codificar uma ou mais imagens em um fluxo de bits, o dispositivo configurado para executar o método aqui descrito.
[0055] De acordo com ainda um aspecto adicional, é fornecido um programa de computador que após a execução faz com que um método aqui descrito seja executado e um suporte legível por computador (não transitório) que armazena instruções para implementar o método aqui descrito.
[0056] De acordo com a presente invenção, é fornecido um dispositivo, um método, um programa de computador (produto), e um suporte de armazenamento legível por computador, conforme estabelecido nas reivindicações em anexo. Outras características das modalidades da invenção são definidas nas reivindicações em anexo e na descrição a seguir. Algumas dessas características são explicadas aqui abaixo com referência a um método, enquanto podem ser transpostas para características de sistema dedicadas ao dispositivo.
[0057] Pelo menos partes dos métodos de acordo com a invenção podem ser implementadas por computador. Consequentemente, a presente invenção pode assumir a forma de uma modalidade inteiramente de hardware, uma modalidade inteiramente de software (incluindo suporte lógico inalterável, software residente, microcódigo, etc.) ou uma modalidade que combina aspectos de software e hardware que geralmente pode ser chamada aqui de um “processador e uma memória”, “circuito”, “módulo” ou “sistema”. Além disso, a presente invenção pode assumir a forma de um produto de programa de computador incorporado em qualquer suporte de expressão tangível tendo código de programa utilizável por computador incorporado no suporte.
[0058] Uma vez que a presente invenção pode ser implementada em software, a presente invenção pode ser incorporada como código legível por computador para fornecimento a um aparelho programável em qualquer suporte adequado. Um suporte tangível pode compreender um suporte de armazenamento, tal como uma unidade de disco rígido, um dispositivo de fita magnética ou um dispositivo de memória de estado sólido, e similares. Um suporte transiente pode incluir um sinal tal como um sinal elétrico, um sinal eletrônico, um sinal óptico, um sinal acústico, um sinal magnético ou um sinal eletromagnético, por exemplo, um sinal de micro-ondas ou sinal de RF. Breve Descrição dos Desenhos
[0059] As modalidades da invenção serão agora descritas, apenas a título de exemplo, e com referência aos seguintes desenhos nos quais:
[0060] A Figura 1 ilustra uma arquitetura de lógica de codificador de vídeo.
[0061] A Figura 2 ilustra uma arquitetura de lógica de decodificador de vídeo correspondente à arquitetura de lógica de codificador de vídeo ilustrada na Figura 1.
[0062] A Figura 3 ilustra esquematicamente exemplos de um esquema de amostragem YUV para amostragem 4:2:0.
[0063] A Figura 4 ilustra, usando um fluxograma, as etapas gerais para gerar um preditor de bloco usando o modo LM, realizado por um codificador ou um decodificador.
[0064] A Figura 5 ilustra esquematicamente um bloco de croma e um bloco de luma associado ou colocado, com redução de resolução das amostras de luma, e amostras de croma e luma vizinhas, como conhecido na técnica anterior.
[0065] A Figura 6 ilustra esquematicamente conjuntos de amostras exemplificativos para derivação de parâmetros LM como conhecido na técnica anterior.
[0066] A Figura 7 ilustra alguns filtros de redução de resolução conhecidos na técnica anterior.
[0067] A Figura 8 ilustra a codificação exemplificativa de sinalizadores para sinalizar modos lineares.
[0068] A Figura 9 ilustra pontos de amostras vizinhas de luma e croma e uma linha reta representando os parâmetros de modelo linear obtidos em uma modalidade da invenção.
[0069] A Figura 10 ilustra as principais etapas de um processo da derivação LM simplificada em uma modalidade da invenção.
[0070] A Figura 11 ilustra vários pontos de amostras e segmentos vizinhos de luma e croma usados para determinar os dois melhores pontos em algumas modalidades da invenção.
[0071] A Figura 12 ilustra as principais etapas de um processo de uma derivação MMLM em uma modalidade da invenção.
[0072] A Figura 13 é um diagrama de blocos esquemático de um dispositivo de computação para implementação de uma ou mais modalidades da invenção.
Descrição Detalhada da Invenção
[0073] A Figura 1 ilustra uma arquitetura do codificador de vídeo. No codificador de vídeo, uma sequência original 101 é dividida em blocos de pixels 102 chamados blocos de codificação ou unidades de codificação para HEVC. Um modo de codificação é então efetuado para cada bloco. Existem duas famílias de modos de codificação tipicamente usados para codificação de vídeo: os modos de codificação baseados em predição espacial ou “modos INTRA” 103 e os modos de codificação baseados em predição temporal ou “modos INTER” baseados na estimativa de movimento 104 e compensação de movimento 105.
[0074] Um bloco de codificação INTRA geralmente é predito a partir dos pixels codificados em sua fronteira causal por um processo chamado de predição INTRA. O preditor para cada pixel do bloco de codificação INTRA forma um bloco preditor. Dependendo de quais pixels são usados para predizer o bloco de codificação INTRA, vários modos INTRA são propostos: por exemplo, modo DC, modo planar e modo angular.
[0075] Embora a Figura 1 seja direcionada para uma descrição geral de uma arquitetura de codificador de vídeo, deve-se notar que um pixel corresponde aqui a um elemento de uma imagem, que tipicamente consiste de várias componentes, por exemplo, uma componente vermelha, uma componente verde e uma componente azul. Uma amostra de imagem é um elemento de uma imagem, que compreende apenas uma componente.
[0076] A predição temporal primeiro consiste em encontrar em um quadro anterior ou futuro, chamado de quadro de referência 116, uma área de referência que é a mais próxima do bloco de codificação em uma etapa de estimativa de movimento 104. Essa área de referência constitui o bloco preditor. Em seguida, este bloco de codificação é predito usando o bloco preditor para computar o resíduo ou bloco residual em uma etapa de compensação de movimento 105.
[0077] Em ambos os casos, predição espacial e temporal, um resíduo ou bloco residual é calculado subtraindo-se o bloco preditor obtido do bloco de codificação.
[0078] Na predição INTRA, um modo de predição é codificado.
[0079] Na predição temporal, um índice indicando o quadro de referência usado e um vetor de movimento indicando a área de referência no quadro de referência são codificados. No entanto, de modo a reduzir ainda mais o custo da taxa de bits relacionada à codificação do vetor de movimento, um vetor de movimento não é diretamente codificado. De fato, supondo-se que o movimento seja homogêneo, é particularmente vantajoso codificar um vetor de movimento como uma diferença entre esse vetor de movimento, e um vetor de movimento (ou preditor de vetor de movimento) em sua vizinhança. No padrão de codificação H.264 / AVC, por exemplo, os vetores de movimento são codificados em relação a um vetor médio computado a partir dos vetores de movimento associados a três blocos localizados acima e à esquerda do bloco atual. Somente uma diferença, também chamada de vetor de movimento residual, computada entre o vetor médio e o vetor de movimento do bloco atual é codificada no fluxo de bits. Isso é processado no módulo “Predição e codificação de Mv” 117. O valor de cada vetor codificado é armazenado no campo do vetor de movimento 118. Os vetores de movimento vizinhos, usados para a predição, são extraídos do campo de vetor de movimento 118.
[0080] O padrão HEVC usa três modos INTER diferentes: o modo Inter, o modo Merge e o modo Merge Skip, que diferem principalmente um do outro pela sinalização da informação de movimento (ou seja, o vetor de movimento e o quadro de referência associado por meio do assim chamado índice de quadro de referência) no fluxo de bits 110. Por uma questão de simplificação, o vetor de movimento e a informação de movimento são conflitados abaixo. Com relação à predição de vetor de movimento, HEVC fornece vários candidatos ao preditor de vetor de movimento que são avaliados durante uma competição de taxa - distorção, a fim de encontrar o melhor preditor de vetor de movimento ou a melhor informação de movimento para os modos Inter ou Merge, respectivamente. Um índice correspondente aos melhores preditores ou ao melhor candidato da informação de movimento é inserido no fluxo de bits 110. Graças a esta sinalização, o decodificador pode derivar o mesmo conjunto de preditores ou candidatos e usa o melhor de acordo com o índice decodificado.
[0081] O modelo da derivação de preditores e candidatos a vetor de movimento contribui para alcançar a melhor eficiência de codificação sem grande impacto na complexidade. Duas derivações de vetor de movimento são propostas em HEVC: uma para o modo Inter (conhecida como Predição de Vetor de Movimento Avançada (AMVP)) e outra para os modos Merge (conhecida como Processo de derivação Merge).
[0082] Em seguida, o modo de codificação que otimiza um critério de taxa - distorção para o bloco de codificação atualmente considerado é selecionado no módulo 106. Para reduzir ainda mais as redundâncias dentro dos dados residuais obtidos, uma transformação, normalmente uma DCT, é aplicada ao bloco residual no módulo 107, e uma quantização é aplicada aos coeficientes obtidos no módulo 108. O bloco quantizado de coeficientes é então codificado por entropia no módulo 109 e o resultado é inserido no fluxo de bits 110.
[0083] O codificador executa então a decodificação de cada um dos blocos codificados do quadro para a estimativa de movimento futuro nos módulos 111 a 116. Essas etapas permitem que o codificador e o decodificador tenham os mesmos quadros de referência 116. Para reconstruir o quadro codificado, cada um dos blocos residuais quantizados e transformados é quantizado inversamente no módulo 111 e transformado inversamente no módulo 112, a fim de fornecer o bloco residual “reconstruído” correspondente no domínio de pixel. Devido à perda da quantização, esse bloco residual “reconstruído” difere do bloco residual original obtido na etapa 106.
[0084] Em seguida, de acordo com o modo de codificação selecionado em 106 (INTER ou INTRA), esse bloco residual “reconstruído” é adicionado ao bloco preditor INTER 114 ou ao bloco preditor INTRA 113, para obter um bloco “pré-reconstruído” (bloco de codificação).
[0085] Em seguida, os blocos “pré-reconstruídos” são filtrados no módulo 115 por um ou vários tipos de pós-filtragem para obter blocos “reconstruídos” (blocos de codificação). Os mesmos pós-filtros são integrados no codificador (na malha de decodificação) e no decodificador para serem usados da mesma maneira, a fim de obter exatamente os mesmos quadros de referência nas extremidades do codificador e do decodificador. O objetivo desta pós-filtragem é remover artefatos de compactação.
[0086] A Figura 2 ilustra uma arquitetura do decodificador de vídeo correspondente à arquitetura do codificador de vídeo ilustrada na Figura 1.
[0087] O fluxo de vídeo 201 é primeiro decodificado por entropia em um módulo 202. Cada bloco residual obtido (bloco de codificação) é então quantizado inversamente em um módulo 203 e transformado inversamente em um módulo 204 para obter um bloco residual “reconstruído”. Isso é semelhante ao início da malha de decodificação na extremidade do codificador.
[0088] Em seguida, de acordo com o modo de decodificação indicado no fluxo de bits 201 (decodificação do tipo INTRA ou decodificação do tipo INTER), um bloco preditor é construído.
[0089] No caso do modo INTRA, um bloco preditor INTRA é determinado 205 com base no modo de predição INTRA especificado no fluxo de bits 201.
[0090] No caso do modo INTER, a informação de movimento é extraída do fluxo de bits durante a decodificação por entropia 202. A informação de movimento é composta, por exemplo, em HEVC e JVET, de um índice de quadro de referência e um residual de vetor de movimento.
[0091] Um preditor de vetor de movimento é obtido da mesma maneira que feito pelo codificador (a partir de blocos vizinhos) usando vetores de movimento já computados armazenados nos dados de campo de vetor de movimento 211. Ele é assim adicionado 210 ao bloco residual de vetor de movimento extraído para obter o vetor de movimento. Este vetor de movimento é adicionado aos dados de campo de vetor de movimento 211 para ser usado na predição dos próximos vetores de movimento decodificados.
[0092] O vetor de movimento também é usado para localizar a área de referência no quadro de referência 206, que é o bloco preditor INTER.
[0093] Em seguida, o bloco residual “reconstruído” obtido em 204 é adicionado ao bloco preditor INTER 206 ou ao bloco preditor INTRA 205, para obter um bloco “pré- reconstruído” (bloco de codificação) da mesma maneira que a malha de decodificação do codificador.
[0094] Em seguida, este bloco “pré-reconstruído” é pós-filtrado no módulo 207, como feito na extremidade do codificador (a sinalização da pós-filtragem a ser usada pode ser recuperada a partir do fluxo de bits 201).
[0095] É assim obtido um bloco “reconstruído” (bloco de codificação) que forma o vídeo descompactado 209 como a saída do decodificador.
[0096] O processo de codificação / decodificação descrito acima pode ser aplicado a quadros monocromáticos. No entanto, os quadros mais comuns são os quadros de cor geralmente feitos de três matrizes de amostras de cores, cada matriz correspondendo a um “componente de cor”, por exemplo, R (vermelho), G (verde) e B (azul). Um pixel da imagem compreende três amostras colocadas / correspondentes, uma para cada componente.
[0097] Os componentes R, G, B geralmente têm alta correlação entre eles. Portanto, é muito comum na compactação de imagem e vídeo para descorrelacionar os componentes de cor antes do processamento dos quadros, convertendo-os em outro espaço de cor. O formato mais comum é o YUV (YCbCr), em que Y é a componente luma (ou luminância) e U (Cb) e V (Cr) são componentes croma (ou crominância).
[0098] Para reduzir a quantidade de dados a processar, alguns componentes de cor dos quadros de cores podem ser subamostrados, resultando em taxas de amostragem diferentes para os três componentes de cor. Um esquema de subamostragem é comumente expresso como uma relação de três partes J:a:b que descreve o número de amostras de luma e croma em uma região conceitual com 2 pixels de altura. ‘J’ define a referência de amostragem horizontal da região conceitual (ou seja, uma largura em pixels), geralmente 4. ‘a’ define o número de amostras de croma (Cr, Cb) na primeira linha de J pixels, enquanto ‘b’ define o número de amostras de croma (adicionais) (Cr, Cb) na segunda linha de J pixels.
[0099] Com os esquemas de subamostragem, o número de amostras de croma é reduzido em comparação com o número de amostras de luma.
[0100] O formato 4:4:4 YUV ou RGB não fornece subamostragem e corresponde a um quadro não subamostrado em que os quadros luma e croma têm o mesmo tamanho W x H.
[0101] O formato 4:0:0 YUV ou RGB tem apenas uma componente de cor e, portanto, corresponde a um quadro monocromático.
[0102] Formatos de amostragem exemplificativos são os seguintes.
[0103] O formato 4:2:0 YUV tem metade do número de amostras de croma que as amostras de luma na primeira linha, e nenhuma amostra de croma na segunda linha. Os dois quadros de croma têm, assim, largura de W/2 pixels e altura de H/2 pixels, onde o quadro de luma é W x H.
[0104] O formato 4:2:2 YUV tem metade do número de amostras de croma na primeira linha e metade do número de amostras de croma na segunda linha, como amostras de luma. Os dois quadros de croma têm, assim, largura de W/2 pixels e altura de H pixels, onde o quadro de luma é W x H.
[0105] O formato 4:1:1 YUV tem 75% menos amostras de croma na primeira linha e 75% menos amostras de croma na segunda linha do que as amostras de luma. Os dois quadros de croma têm, assim, largura de W/4 pixels e altura de H pixels, onde o quadro de luma é W x H.
[0106] Quando subamostradas, as posições das amostras de croma nos quadros são deslocadas em comparação com as posições da amostra de luma.
[0107] A Figura 3 ilustra um posicionamento exemplificativo de amostras de croma (triângulos) em relação a amostras de luma (círculos) para um quadro YUV 4:2:0.
[0108] O processo de codificação da Figura 1 pode ser aplicado a cada quadro de componente de cor de um quadro de entrada.
[0109] Devido a correlações entre os componentes de cor (entre RGB ou correlações restantes entre YUV, apesar da conversão de RGB para YUV), os métodos de predição de componentes cruzados (CCP) foram desenvolvidos para explorar essas correlações (restantes) a fim de melhorar a eficiência da codificação.
[0110] Os métodos de CCP podem ser aplicados em diferentes estágios do processo de codificação ou decodificação, em particular ou no primeiro estágio de predição (para predizer uma componente de cor atual) ou no segundo estágio de predição (para predizer um bloco residual atual de uma componente).
[0111] Um método CCP conhecido é o modo LM, também conhecido como CCLM (predição de modelo linear de componentes cruzados). Ele é usado para predizer os componentes de croma Cb e Cr (ou U e V) a partir do luma Y, mais especificamente a partir do luma reconstruído (na extremidade do codificador ou na extremidade do decodificador). Um preditor é gerado para cada componente. O método opera em um nível de bloco (croma e luma), por exemplo, no nível CTU (unidade de árvore de codificação), CU (unidade de codificação), nível de PU (unidade de predição), nível sub-PU ou TU (unidade de transformação).
[0112] A Figura 4 ilustra como um exemplo, usando um fluxograma, etapas gerais para gerar um preditor de bloco usando o modo LM, executado ou pelo codificador (usado como referência abaixo) ou pelo decodificador.
[0113] Na descrição abaixo, um primeira componente exemplificativa é croma, enquanto um segunda componente exemplificativa é luma.
[0114] Considerando que um bloco de croma atual 502 (Figura 5A) codifica ou decodifica e seu bloco de luma associado (ou seja, “colocado”) 505 (ou seja, da mesma CU, por exemplo) no mesmo quadro, o codificador (ou o decodificador) recebe, na etapa 401, um conjunto de amostras de luma vizinhas RecL compreendendo amostras de luma 503 vizinhas ao bloco de luma atual, e recebe um conjunto de amostras de croma vizinhas RecC compreendendo amostras de croma 501 vizinhas ao bloco de croma atual, indicado 402. Deve-se notar que, para alguns formatos de amostragem de croma e fase de croma, as amostras de luma 504 e 503 não são diretamente adjacentes ao bloco de luma 505, como representado na Figura 5A. Por exemplo, na Figura 5A, para obter a linha esquerda RecL’ (503), apenas a segunda linha esquerda é necessária e não a linha esquerda direta. Do mesmo modo, para a linha ascendente 504, a segunda linha ascendente também é considerada para a redução de resolução da amostra de luma, como mostrado na Figura 5A.
[0115] Quando um formato de amostragem de croma é usado (por exemplo, 4:2:0, 4:2:2, etc.), o conjunto de amostras de luma vizinhas é submetido a uma redução de resolução na etapa 403 na RecL’ 404 para corresponder à resolução de croma (ou seja, a resolução da amostra do quadro / bloco de croma correspondente). RecL’, portanto, compreende amostras de luma reconstruídas 504 vizinhas ao bloco de luma atual que são submetidas à redução de resolução. Graças à redução de resolução, RecL’ e RecC compreendem o mesmo número 2N de amostras (o bloco de croma 502 sendo N x N). No entanto, existem reduções de resolução da borda de luma na técnica anterior, onde são necessárias menos amostras para obter RecL’. Além disso, mesmo que RecL e RecC tenham a mesma resolução, a RecL’ pode ser vista como a versão sem ruído de RecL, através do uso de um filtro de convolução passa-baixa.
[0116] No exemplo da Figura 5A, os conjuntos de amostras de luma e croma vizinhas são feitos das amostras de luma vizinhas superiores e esquerdas de resolução reduzida e das amostras de croma vizinhas superior e esquerda, respectivamente. Mais precisamente, cada um dos dois conjuntos de amostras é constituído pela primeira linha imediatamente adjacente à fronteira esquerda e pela primeira linha imediatamente adjacente à fronteira superior do respectivo bloco de luma ou croma. Devido à redução de resolução (4:2:0 na Figura 5A), a linha única de amostras de luma vizinhas RecL’ é obtida a partir de duas linhas de amostras de luma reconstruídas de resolução reduzida RecL (esquerda ou superior).
[0117] US 9.565.428 sugere o uso de subamostragem que seleciona uma única amostra, apenas para a linha superior (isto é, adjacente à fronteira superior do bloco de luma) e não para o próprio bloco de luma (como descrito abaixo com referência à etapa 408). A subamostragem proposta é ilustrada na Figura 6A. A motivação para essa abordagem é reduzir o armazenamento de linha da linha superior.
[0118] O modelo linear que é definido por um ou dois parâmetros (uma inclinação α e um deslocamento β) é derivado de RecL’ (se houver, caso contrário RecL) e RecC. Esta é a etapa 405 para obter os parâmetros 406.
[0119] Os parâmetros lineares α e β são obtidos usando um método baseado na média quadrática usando as seguintes equações:onde M é um valor que depende do tamanho do bloco considerado. Em casos gerais de blocos quadrados, como mostrado nas Figuras 5A e 5B, M = 2N. No entanto, o CCP baseado em LM pode aplicar-se a qualquer formato de bloco em que M é, por exemplo, a soma da altura de bloco H mais a largura de bloco W (para um formato de bloco retangular).
[0120] Deve-se notar que o valor de M usado como um peso nesta equação pode ser ajustado para evitar sobrecargas computacionais no codificador e no decodificador. Para ser preciso, ao usar aritmética com arquiteturas assinadas de 32 ou 64 bits, alguns dos cálculos podem às vezes sobrecarregar e, portanto, causam comportamento não especificado (o que é estritamente proibido em qualquer padrão de plataforma cruzada). Para enfrentar essa situação, a magnitude máxima possível, considerando os valores das entradas RecL’ e RecC, pode ser avaliada, e M (e as somas acima) podem ser escalonadas consequentemente para garantir que não ocorra sobrecarga.
[0121] A derivação dos parâmetros é geralmente feita a partir dos conjuntos de amostras RecL’ e RecC mostrados na Figura 5A.
[0122] Variações dos conjuntos de amostras foram propostas.
[0123] Por exemplo, US 9.288.500 propõe três conjuntos de amostras concorrentes, incluindo um primeiro conjunto de amostras da linha externa adjacente à fronteira superior e a linha externa adjacente à fronteira esquerda, um segundo conjunto de amostras composto apenas da linha externa adjacente à fronteira superior e um terceiro conjunto de amostras composto apenas da linha externa adjacente à fronteira esquerda. Esses três conjuntos de amostras são mostrados na Figura 6B apenas para o bloco de croma (e, portanto, podem ser transpostos para o bloco de luma).
[0124] US 9.462.273 estende o segundo e o terceiro conjunto de amostras para amostras adicionais que estendem as linhas externas (geralmente dobrando seu comprimento). Os conjuntos de amostras estendidos são mostrados na Figura 6C apenas para o bloco de croma. Este documento também fornece uma redução no número de modos LM disponíveis, a fim de diminuir os custos de sinalização para sinalizar o modo LM usado no fluxo de bits. A redução pode ser contextual, por exemplo, com base no modo Intra selecionado para o bloco de luma associado.
[0125] US 9.736.487 propõe três conjuntos de amostras concorrentes semelhantes aos de US 9.288.500, mas feito, cada vez, das duas linhas de amostras vizinhas externas paralelas e imediatamente adjacentes às fronteiras consideradas. Esses conjuntos de amostras são mostrados na Figura 6D apenas para o bloco de croma.
[0126] Também US 9.153.040 e os documentos da mesma família de patentes propõem conjuntos de amostras adicionais feitos de uma única linha por fronteira, com menos amostras por linha que os conjuntos anteriores.
[0127] De volta ao processo da Figura 4, usando o modelo linear com um ou mais parâmetros derivados 406, um preditor intra de croma 413 para o bloco de croma 502 pode, assim, ser obtido a partir das amostras de luma reconstruídas 407 do bloco de luma atual representado em 505. Novamente se um formato de amostragem de croma for utilizado (por exemplo, 4:2:0, 4:2:2, etc.), as amostras de luma reconstruídas são submetidas a uma redução de resolução na etapa 408 em L’ 409 para corresponder à resolução de croma (isto é, a resolução da amostra do quadro / bloco de croma correspondente).
[0128] A mesma redução de resolução da etapa 403 pode ser usada, ou outra por um motivo de armazenamento de linha. Por exemplo, um filtro de 6 derivações pode ser usado para fornecer o valor de resolução reduzida como uma soma ponderada das amostras superior esquerda, superior, superior direita, inferior esquerda, inferior e inferior direita ao redor da posição de redução de resolução. Quando algumas amostras ao redor estão ausentes, um mero filtro de 2 derivações é usado em vez do filtro de 6 derivações.
[0129] Aplicado às amostras de luma reconstruídas L, a saída L’ de um filtro de 6 derivações exemplificativo é obtida da seguinte forma:com (i, j) sendo as coordenadas da amostra dentro do bloco de resolução reduzida e >> sendo a operação de deslocamento de bits para a direita.
[0130] Além disso, uma redução de resolução de luma adaptativa pode ser usada como descrito em US 2017/0244975. Somente o conteúdo do bloco de luma é usado para determinar qual filtro de redução de resolução é usado para cada amostra de luma reconstruída do bloco de luma. Um filtro de 1 derivação está disponível. A motivação dessa abordagem é evitar a propagação de uma borda no bloco de luma de resolução reduzida.
[0131] Graças à etapa de redução de resolução 408, os blocos L’ e C (o conjunto de amostras de croma no bloco 502) compreendem o mesmo número N2 de amostras (o bloco 502 sendo N x N).
[0132] Em seguida, cada amostra do preditor intra de croma PredC 413 é calculada usando a malha 410-411-412, seguindo a fórmulasendo (i, j) as coordenadas de todas as amostras dentro dos blocos de croma e luma.
[0133] Para evitar divisões e multiplicações, os cálculos podem ser implementados usando métodos menos complexos, com base em tabelas de consulta e operações de deslocamento. Por exemplo, a derivação de preditor intra de croma real 411 pode ser feita da seguinte maneira:onde S é um número inteiro e A é derivado de A1 e A2 (introduzido acima quando calculando α e β) usando a tabela de consulta mencionada anteriormente. Na verdade, corresponde a um valor redimensionado de α. A operação (x >> S) corresponde à operação de deslocamento de bits para a direita, equivalente a uma divisão inteira de x (com truncamento) por 2S.
[0134] Quando todas as amostras do bloco de luma de resolução reduzida foram analisadas (412), o preditor intra de croma 413 está disponível para subtração do bloco de croma 502 (para obter um bloco residual de croma) na extremidade do codificador ou para adição a um bloco residual de croma (para obter um bloco de croma reconstruído) na extremidade do decodificador.
[0135] Observa-se que o bloco residual de croma pode ser insignificante e, portanto, descartado; nesse caso, o preditor intra de croma obtido 413 corresponde diretamente às amostras de croma preditas (formando o bloco de croma 502).
[0136] Os dois grupos de padronização ITU-T VCEG (Q6 / 16) e ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) que definiram o padrão HEVC estão estudando futuras tecnologias de codificação de vídeo para o sucessor de HEVC em um esforço conjunto de colaboração conhecido como Equipe de Colaboração Conjunta em Codificação de Vídeo (JVET). O Modelo de Colaboração Conjunta (JEM) contém ferramentas HEVC e novas ferramentas adicionadas selecionadas por este grupo JVET. Em particular, este software de referência contém algumas ferramentas de CCP, conforme descrito no documento JVET-G1001.
[0137] No JEM, são permitidos 11 modos intra para codificação de croma. Esses modos incluem cinco modos intra tradicionais e seis modos LM de componentes cruzados para predizer Cb a partir de Y (sinalizado no fluxo de bits 110, 201) e um modo LM de componentes cruzados para predizer Cr a partir de Cb.
[0138] Um dos seis modos LM CC Y-para-Cb é o CCLM descrito acima, no qual os conjuntos de amostras de luma e croma vizinhas RecL’ e RecC são feitos da primeira linha imediatamente adjacente à fronteira esquerda e da primeira linha imediatamente adjacente até a fronteira superior de seu respectivo bloco de luma ou croma, como mostrado na Figura 5A.
[0139] Os outros cinco modos LM CC Y-para-Cb são baseados em uma derivação específica conhecida como o Modelo Múltiplo (MM). Esses modos são chamados de MMLM.
[0140] Em comparação com CCLM, os modos MMLM usam dois modelos lineares. As amostras de luma reconstruídas vizinhas do conjunto RecL’ e as amostras de croma vizinhas do conjunto RecC são classificadas em dois grupos, sendo cada grupo utilizado para derivar os parâmetros α e β de um modelo linear, resultando assim em dois conjuntos de parâmetros de modelo linear (α1, β1) e (α2, β2).
[0141] Por exemplo, um limite pode ser calculado como o valor médio das amostras de luma reconstruídas vizinhas que formam RecL’. Em seguida, uma amostra de luma vizinha com RecL’[i, j]’ < limite é classificada no grupo 1; enquanto uma amostra de luma vizinha com limite de RecL’[i, j] > limite é classificada no grupo 2.
[0142] Em seguida, o preditor intra de croma (ou as amostras de croma preditas para o bloco de croma atual 602) é obtido de acordo com as seguintes fórmulas:
[0143] Além disso, em comparação com o CCLM, os modos MMLM usam conjuntos de amostras de luma e croma vizinhas RecL’ e RecC, cada um feito de duas linhas de amostras vizinhas externas paralelas e imediatamente adjacentes aos limites esquerdo e superior do bloco considerado. Um exemplo é mostrado na Figura 5B ilustrando um formato de amostragem 4:2:0 para o qual as duas linhas de amostras de luma vizinhas são obtidas (usando redução de resolução) de quatro linhas de amostras de luma reconstruídas sem redução de resolução.
[0144] Os cinco modos MMLM diferem entre si por cinco filtros diferentes de redução de resolução das amostras de luma reconstruídas para corresponder à resolução do croma (para obter RecL’ e / ou L’).
[0145] Um primeiro modo MMLM conta com o mesmo filtro de 6 derivações usado no CCLM (consultar os 6 pontos pretos na referência 701 da Figura 7). O segundo ao quarto modo MMLM contam com filtros de 2 derivações que fornecem respectivamente o valor de resolução reduzida como uma soma ponderada de: - as amostras superior direita e inferior direita das seis amostras (usadas pelo filtro de 6 derivações) ao redor da posição de resolução reduzida (consultar o filtro 1, 702 da Figura 7): - as amostras inferior e inferior direita das seis amostras (usadas pelo filtro de 6 derivações) ao redor da posição de resolução reduzida (consultar o filtro 2, 703 da Figura 7): - as amostras superior e superior direita das seis amostras (usadas pelo filtro de 6 derivações) ao redor da posição de amostragem inferior (consultar o filtro 4, 705 da Figura 7):
[0146] O quinto modo MMLM baseia-se no filtro de 4 derivações, que fornece o valor de resolução reduzida como a soma ponderada das amostras superior, superior direita, inferior e inferior direita das seis amostras (usadas pelo filtro de 6 derivações) ao redor da posição de resolução reduzida (ver filtro 3, 704 da Figura 7):
[0147] Como indicado acima, o modo CCLM ou MMLM deve ser sinalizado no fluxo de bits 110 ou 201. A Figura 8 ilustra um exemplo de sinalização no modo LM de JEM. Um primeiro sinalizador binário indica se o bloco atual é predito usando um modo LM ou outros modos intra, incluindo os chamados modos DM. No caso do modo LM, os seis modos LM possíveis precisam ser sinalizados. O primeiro modo MMLM (usando o filtro de 6 derivações) é sinalizado com um segundo sinalizador binário definido como 1. Esse segundo sinalizador binário é definido como 0 para os modos restantes; nesse caso, um terceiro sinalizador binário é definido como 1 para sinalizar o modo CCLM e é definido como 0 para os modos MMLM restantes. Dois sinalizadores binários adicionais são usados para sinalizar um dos quatro modos MMLM restantes.
[0148] Um modo é sinalizado para cada componente de croma.
[0149] O modo CCLM Cb para Cr introduzido acima é usado nos modos DM, e aplica-se em nível residual. De fato, um modo DM usa para croma o modo intra que foi usado por luma em uma localização predeterminada. Tradicionalmente, um modo de codificação como o HEVC usa um único modo DM, co-localizado com o canto superior esquerdo de CU. Sem entrar em muitos detalhes e por uma questão de clareza, o JVET fornece várias dessas localizações. Este modo é então usado para determinar o método de predição, criando, portanto, uma predição intra usual para uma componente de croma que, quando subtraída dos dados de referência / originais, gera dados residuais mencionados acima. A predição para o Cr residual é obtida a partir do Cb residual (ResidualCb abaixo) pela seguinte fórmula:
[0150] em que α é derivado de maneira semelhante à predição de luma para croma CCLM. A única diferença é a adição de um custo de regressão relativo a um valor α padrão na função de erro, de modo que o fator de escalonamento derivado é direcionado a um valor padrão de -0,5 da seguinte maneira:onde RecCbi representa os valores de amostras de Cb reconstruídas vizinhas, RecCri representa as amostras de Cr reconstruídas vizinhas, e
[0151] Os modos LM conhecidos exibem uma grande complexidade computacional, em particular ao derivar o parâmetro do modelo linear usando métodos baseados em mínimos quadrados.
[0152] A presente invenção procura melhorar a situação em termos de eficiência de codificação e / ou complexidade computacional.
[0153] A invenção é baseada na substituição da derivação de um modelo linear usado para calcular amostras de blocos preditores de croma a partir de amostras de blocos de luma por determinação dos parâmetros do modelo linear com base na equação de uma linha reta. A linha reta é definida por dois pares de amostras definidos com base em pares de amostras reconstruídas na vizinhança do bloco. Primeiro, os dois pares de amostras a serem usados são determinados. Em seguida, os parâmetros do modelo linear são determinados a partir desses dois pares de amostras. Ao limitar em dois o número de pares de amostras usados na determinação do modelo linear, pode-se evitar o uso de um método da média dos mínimos quadrados. O método proposto é, portanto, menos intensivo em computação do que o método conhecido, usando um método da média dos mínimos quadrados.
[0154] A Figura 9 ilustra o princípio desse método considerando aqui os valores mínimo e máximo da amostra de luma no conjunto de pares de amostras na vizinhança do bloco atual. Todos os pares de amostras são desenhados na figura de acordo com seu valor de croma e seu valor de luma. Dois pontos diferentes, ou seja, o ponto A e o ponto B, são identificados na figura, cada ponto correspondendo a um par de amostras. O ponto A corresponde ao par de amostras com o menor valor de luma xA a partir de RecL’ e yA seu valor de croma colocado a partir de RecC. O ponto B corresponde ao par de amostras com o valor de luma mais alto xB e yB seu valor de croma colocado.
[0155] A Figura 10 fornece o fluxograma de um método proposto para derivar os parâmetros do modelo linear. Este fluxograma é uma versão simplificada da Figura 4. O método é baseado nas amostras de luma vizinhas RecL’ obtidas na etapa 1001 e nas amostras de croma RecC obtidas na etapa 1002.
[0156] Na etapa 1003, os dois pontos A e B (1004) correspondentes a dois pares de amostras são determinados. Em uma primeira modalidade, esses dois pontos A e B correspondem aos pares de amostras com respectivamente os valores mais baixo e mais alto de amostra de luma xA e xB com seus valores correspondentes de amostra de croma yA e yB.
[0157] Então, a equação de linha reta que cruza os pontos A e B é calculada na etapa 1005 de acordo com a seguinte equação:a e β obtidos são os parâmetros do modelo linear 1006 usados para gerar o preditor de croma.
[0158] A derivação do modelo linear com base no algoritmo LMS usado na técnica anterior tem uma certa complexidade. Neste método conhecido, o cálculo do parâmetro α do modelo é obtido pela seguinte equação:
[0159] A análise desta equação em relação à complexidade da computação fornece os seguintes resultados. O cálculo de B1 requer M + 1 multiplicações e M somas, sendo M o número de pares de amostras. O cálculo de B2 requer 1 multiplicação e 2M somas. O cálculo de B3 requer M + 1 multiplicações e M somas e o cálculo de B4 requer uma multiplicação e 2M somas. O cálculo de α correspondenterequer duas somas adicionais e uma divisão.
[0160] Para calcular β, uma multiplicação e 2M + 1 somas e uma divisão. Como descrito anteriormente, M é o número de pares de amostras RecCt e RecL’t.
[0161] A complexidade da derivação LMS de α e β é, portanto, (2M + 2 + 2) multiplicações, (7M + 3) adições, e duas divisões.
[0162] Em comparação, a análise do método proposto com base no cálculo da equação de uma linha reta usando apenas dois pontos fornece os seguintes resultados. Conforme relatado, a etapa de derivação 1005 requer apenas uma multiplicação, três somas e uma divisão. Essa grande redução de complexidade na geração dos parâmetros do modelo linear é uma grande vantagem da invenção proposta.
[0163] Dever-se-ia notar que a busca pelos valores mínimo e máximo tem uma complexidade própria, geralmente relacionada ao algoritmo de classificação. A operação não é completamente serial: N pontos podem ser comparados a N outros pontos, gerando N mínimo / máximo. Então, N / 2 pontos mínimos e N / 2 pontos máximos podem ser comparados aos outros N / 2, depois novamente N / 4 e assim por diante até restarem apenas os números desejados de pontos mínimos e máximos. Normalmente, a busca pelo mínimo e pelo máximo resulta em aproximadamente 2 * N-2 comparações (N-1 para cada).
[0164] Como já descrito, o preditor de croma pode ser calculado com uma multiplicação de números inteiros e um deslocamento em vez de uma multiplicação de ponto flutuante, e uma divisão ao calcular a inclinação. Essa simplificação consiste em substituir:
[0165] Para usar apenas multiplicação de inteiros e deslocamento, em uma modalidade, a equação de linha reta é obtida da seguinte maneira:
[0166] Observa-se que β se refere a esta equação a seguir, se α for substituído por L e S, caso contrário, se refere à equação tradicional
[0167] Outra vantagem dessa derivação é que o valor de deslocamento S sempre tem o mesmo valor. Isso é interessante, especialmente para a implementação de hardware, que pode ser simplificada ao tirar proveito dessa propriedade.
[0168] Em ainda outra modalidade, o valor de S é forçado a ser baixo, pois L pode ser grande, e requer operações multiplicadoras maiores. De fato, uma multiplicação de valores de 8 bits por um valor de 8 bits é muito mais fácil de implementar do que por exemplo um multiplicador 8 * 16. Valores práticos típicos para L são geralmente equivalentes a um multiplicador menor do que 8 bits.
[0169] No entanto, a modalidade preferencial é uma implementação conhecida como ponto fixo: para cada valor de D = (xB - xA), possivelmente quantizado (por exemplo, os resultados para 2D + 0 e 2D + 1 são armazenados como um único), o valor de (1 << S) / D é armazenado em uma tabela. De preferência, estes são apenas para os valores positivos, pois o sinal pode ser facilmente recuperado. Usando uma matriz TAB, o cálculo de L torna-se assim:
[0170] Q controla a quantização e, portanto, o número de elementos na tabela. Usar Q = 1, portanto, significa sem quantização. Observa-se também que o índice consultado pode ser (abs(xB - xA~) + R)/Q, geralmente com R = Q / 2, ou uma variação do arredondamento de divisão. Consequentemente, Q é idealmente uma potência de 2, de modo que a divisão por Q = 2P é equivalente a um deslocamento à direita por P.
[0171] Finalmente, alguns dos valores nessa tabela podem não ser iguais a 0: valores baixos de abs (xB - xA) ou abs (yB - yA) geralmente resultam em estimativas muito ruins de L. Valores pré-determinados ou explícitos (como no cabeçalho da fatia ou em um conjunto de parâmetros tal como PPS ou SPS) podem ser usados. Por exemplo, para todos os valores de D abaixo de 4, a matriz TAB pode conter um valor padrão, por exemplo - (1 << S) / 8.
[0172] Para conteúdo de 10 bits e Q = 1, são necessárias até 2048 entradas na matriz. Ao explorar a simetria com o sinal como mostrado acima, isso pode ser reduzido para 1024. Aumentar mais Q reduziria da mesma forma o tamanho de TAB.
[0173] Se algumas das amostras (RecL ou RecC, ou ambas) são amostras residuais (ou seja, resultantes da diferença entre dois blocos, possivelmente quantizados), como é o caso em JVET com predição de Cb para Cr, então o tamanho da tabela (e conteúdo) pode ser consequentemente adaptado.
[0174] Em outra modalidade preferencial, a determinação dos dois parâmetros da linha reta α e β na seguinte fórmulaé calculada para que a aritmética de inteiros possa ser usada para ser facilmente implementada em hardware.
[0175] Mais precisamente, a determinação dos parâmetros α e β pode ser realizada apenas através de multiplicações de números inteiros e operações de deslocamento de bits em números inteiros. Esses cálculos utilizam menos recursos de hardware (por exemplo, memória e tempo) do que outros tipos de cálculos, tal como aritmética de ponto flutuante.
[0176] Para executar essa aritmética de inteiros, as seguintes etapas são executadas.
[0177] Um primeiro valor intermediário “pshift” é determinado levando em consideração a profundidade de bits das amostras Luma e Croma a serem tratadas. Esse valor de deslocamento de bit garante um valor máximo especificado do denominador (chamado de ‘diff’) de α. Na presente modalidade, o valor máximo de ‘diff’ é 512 e, como tal, pode ser representado em uma tabela com 512 entradas. Ao forçar um valor máximo específico de ‘diff’, uma tabela comum (ou conjunto de tabelas) pode ser usada para uma variedade de profundidades de bits diferentes, o que reduz os requisitos de memória total.
[0178] O valor de pshift depende da profundidade de bits das amostras - como (por exemplo, se as amostras são codificadas usando 10 bits, a diferença máxima entre o máximo e o mínimo é 1024). Para representar isso em uma tabela de 512 entradas, deve ser dividido por 2 ou deslocado em 1 bit, portanto pshift = 1. Uma relação entre pshit e bitdepth pode, por exemplo, ser extraído para a Tabela 1 a seguir, ou fornecida pela seguinte expressão:
[0179] Iisso pode ser alternativamente representado pela seguinte expressão:
[0180] Um valor de arredondamento opcional “add” também pode ser calculado de modo a tornar ‘diff’ um número inteiro após o deslocamento de bits. O valor “add” está relacionado a pshift de acordo com a seguinte expressão:
[0181] Isso pode ser alternativamente representado pela seguinte expressão:
[0182] Alternativamente, uma relação direta entre “BitDepth” e “add” pode ser fornecida pelas seguintes expressões:
[0183] A Tabela 1 abaixo fornece valores exemplificativos de “pshift” e “add” correspondentes à profundidade de bits das amostras de Luma e Croma a serem tratadas variando de 8 a 16 bits.Tabela 1: Exemplo de valor “pshift” e “add”
[0184] Esta tabela pode ser armazenada na memória de modo a evitar a necessidade de recalcular ‘pshift’ e ‘add’, o que pode reduzir o número de operações de processamento. No entanto, certas implementações podem priorizar a redução do uso de memória sobre o número de operações de processamento e, como tal, ‘pshift’ e ‘add’ podem ser calculados a cada vez.
[0185] Então, um valor “diff” representa o valor de faixa entre os valores mínimo e máximo das amostras de Luma de uma maneira adequada para processamento usando aritmética de inteiros. O valor de ‘diff’ é um número inteiro que é restringido dentro de uma determinada faixa pelo uso de ‘pshift’. Este valor “diff” é calculado a partir da seguinte fórmula:
[0186] Em seguida, os parâmetros α e β são calculados - deve-se lembrar que α e β definem a inclinação e a interseção do modelo linear na interseção dos pontos A e B:
[0187] Se o valor “diff” representando for igual a zero, os parâmetros α e β são atribuídos da seguinte forma:
[0188] A escolha de usar o ponto A ou B pode ser determinada por qual ponto está atualmente armazenado na memória, de modo a reduzir o número de operações de processamento.
[0189] Caso contrário, se o valor “diff” for estritamente positivo, o valor de α é determinado pela seguinte formulaonde a função Floor (x) fornece o maior valor inteiro menor ou igual a x e onde o parâmetro intermediário “div” é calculado da seguinte forma:
[0190] A precisão dessa divisão é representada pela variável “k”. Foi encontrado um valor de k = 16 para fornecer a melhor eficiência de codificação e permite uma representação precisa de α e β usando aritmética de inteiros. Isso permitirá uma predição precisa da amostra de Croma quando usando a amostra de Luma correspondente.
[0191] Como será descrito em mais detalhes abaixo, o valor de k também define quanta memória cada entrada requer. Um valor de k = 16 permite que um registro de memória de 16 bits que pode ser representado em 2 bytes seja usado ao endereçar cada uma das entradas da tabela.
[0192] O parâmetro β é determinado aplicando a equação de linha reta em um único ponto da linha reta que poderia ser o ponto A
[0193] A escolha do uso do ponto A ou B pode ser determinada por qual ponto está atualmente armazenado na memória, de modo a reduzir o número de operações de processamento. Alternativamente, pode ser uma escolha fixa - por exemplo, definida em um padrão.
[0194] A partir do ponto de vista da implementação em hardware, alguns dos termos das fórmulas (1) e (2) podem ser substituídos por tabelas nas quais os valores pré-computados são armazenados. A principal vantagem dessas tabelas é evitar o cálculo da função intermediária “Floor” cada vez que a derivação dos parâmetros α e β é realizada. Dessa forma, várias operações de processamento podem ser substituídas por uma operação de consulta.
[0195] Por exemplo, a equação (1) pode ser simplificada da seguinte maneira para fornecer a equação (3) usando uma tabela TAB1[diff]:onde TAB1 [diff] = Floor(2k / diff).
[0196] Da mesma forma, a equação (2) pode ser simplificada usando as tabelas predeterminadas TAB1 [diff] e TAB2 [diff] para evitar iterar as mesmas operações.onde TAB2 [diff] = Floor ((2k * 2k) / diff).
[0197] Essa equação (4) poderia ser mais simplificada pela seguinte equação:Onde TAB3 [diff] = TAB2 [diff] - TAB1 [diff] * 2k = Floor((2k * 2k) / diff) - 2k * Floor(2k / diff). TAB1 e TAB3 (e também TAB2) são tabelas, cada uma com N entradas N = 2(BitDetpth - pshift) e cada entrada sendo representada por k bits.
[0198] De acordo com a definição da variável inteira “diff” acima, e considerando, por exemplo, um valor de amostra de Luma ou Croma representado em 10 bits, o valor máximo de “diff” é 512 (usando a Tabela 1a acima). Isso significa que a tabela TAB1 e TAB3 (e também TAB2) podem ser, para cada uma delas, representadas por uma matriz com 512 entradas e cada entrada é codificada em “k = 16” bits. A variável “pshift” apresentada na Tabela 1 permite obter o mesmo número de entradas (aqui 512) de acordo com a profundidade de bits das amostras a serem processadas.
[0199] Como mencionado anteriormente, essas matrizes (TAB1 a TAB3) podem ser armazenadas na memória de modo a reduzir o número de operações a serem realizadas para a derivação dos parâmetros α e β na equação (1) e (2).
[0200] No escopo do trabalho de padronização VVC, esse método pode ser usado para implementar a divisão para recuperar os parâmetros α e β do modelo linear para predizer uma amostra de Croma a partir de uma amostra de Luma. No entanto, verificou-se surpreendentemente que o tamanho da tabela e a representação de cada entrada podem ser reduzidos sem afetar adversamente a eficiência da codificação.
[0201] Como discutido acima, a memória total necessária para armazenar cada tabela depende do valor de “pshift” e o número de bits para representar cada entrada pode ser codificado usando o valor “k”. Na modalidade discutida acima, duas tabelas (TAB1 e TAB3) são usadas e cada tabela tem 512 entradas e k = 16. A memória necessária para representar essas duas tabelas TAB1 e TAB3 é: 2 * 512 * 16 = 16 384 bits que podem ser armazenados em 2048 bytes.
[0202] A modificação dos parâmetros que determinam os requisitos de memória (independentemente e em conjunto) será discutida agora.
Número de entradas em cada tabela (Matriz)
[0203] Apesar de ser alcançada uma boa compactação usando tabelas tendo um tamanho de 512 entradas, essas tabelas podem ser consideradas muito grandes e é desejável que seu tamanho seja reduzido.
[0204] As Tabelas 3 e 4 mostram o impacto na eficiência da codificação de acordo com as métricas de Bj0ntegard (consultar, por exemplo, Bjontegard. Calculation of average PSNR diferences between rd-curves. Doc. VCEG-M33 ITU-T Q6 / 16, abril de 2001. 79 Z. Xiong , A. Liveris e S. Cheng para obter uma explicação de como essas métricas são determinadas) reduzindo o número de entradas de 512 para 256 e 128 entradas, respectivamente. A diminuição no tamanho da tabela é realizada incrementando-se o valor de ‘pshift’ em um (N = 2(BitDetpth - pshift)). O valor de ‘add’ pode ser consequentemente ajustado. Alternar N para 256 ou 128 é mostrado na Tabela 2 abaixo: Tabela 2: Exemplo de valor de “pshift” e “add” para uma tabela de 256 ou 128 entradas Esta tabela pode ser representada pelas seguintes expressões: 265 entradas pShift = (BitDepth> 8)? BitDepth - 8: 0 Isso pode ser alternativamente representado pela seguinte expressão:
[0205] Um valor de arredondamento opcional “add” também pode ser calculado d modo a tornar ‘diff’ um número inteiro após o deslocamento de bits. O valor ‘add’ está relacionado ao pshift de acordo com a seguinte expressão: add = pshift? 1 << (pshift - 1): 0. Isso pode ser alternativamente representado pela seguinte expressão:
[0206] Alternativamente, uma relação direta entre ‘BitDepth’ e ‘add’ pode ser fornecida pelas seguintes expressões: add = (BitDepth> 8)? 1 << (BitDepth - 9): 0 Ou: 128 entradas pShift = (BitDepth > 7)? BitDepth - 7: 0 Isso pode ser alternativamente representado pela seguinte expressão:
[0207] Um valor de arredondamento opcional “add” também pode ser calculado de modo a tornar ‘diff’ um número inteiro após o deslocamento de bits. O valor ‘add’ está relacionado ao pshift de acordo com a seguinte expressão: add = pshift? 1 << (pshift - 1): 0. Isso pode ser alternativamente representado pela seguinte expressão:
[0208] Alternativamente, uma relação direta entre ‘BitDepth’ e ‘add’ pode ser fornecida pelas seguintes expressões: add = (BitDepth > 7)? 1 << (BitDepth - 8): 0 Ou:
[0209] A redução do tamanho da tabela resulta em uma representação mais grosseira da diferença entre o valor máximo e o valor mínimo dos valores de amostras.
[0210] O teste de avaliação da eficiência da codificação foi realizado em um conjunto de sequências de vídeo usadas pelo comitê de padronização de JVET definido no documento JVET-L1010. Na tabela abaixo, valores negativos mostram melhor eficiência de codificação, enquanto valores positivos correspondem a uma diminuição na eficiência de codificação.Tabela 3: Desempenho da compactação quando usando tabelas de tamanho 256
[0211] Como é mostrado na Tabela 3, a eficiência da codificação é surpreendentemente essencialmente não afetada, apesar do número de entradas na tabela TAB1 e TAB3 ter sido reduzido por um fator de 2. Pode-se observar que as perdas, introduzidas pela modificação que afeta o modo CCLM, são muito limitadas e são inferiores a 0,2% nos canais Croma (U) e (V), que são essencialmente insignificantes (e provavelmente representando ruído).
[0212] Foi conduzido um experimento semelhante para um tamanho de tabela de 128 - gerado incrementando o valor de pshift em 1 adicional (como mostrado na tabela 2 acima).Tabela 4: Desempenho da compactação quando usando tabelas de tamanho 128
[0213] Como é mostrado na Tabela 4, ainda mais surpreendentemente, a eficiência da codificação ainda não é afetada, apesar do número de entradas na tabela TAB1 e TAB3 ter sido reduzido por um fator de 4. Pode-se observar que as perdas, introduzidas pela modificação afetando o modo CCLM, são muito limitadas e inferiores a 0,05% nos canais Croma (U) e (V), que são essencialmente insignificantes (e provavelmente representando ruído).
[0214] No entanto, uma redução adicional do tamanho da tabela para 64 entradas (aumentando o pshift em 1 adicional) resulta em uma perda maior do desempenho de compactação, conforme apresentado na tabela 5 abaixo:
[0215] Esses resultados são parciais, pois não incluem a Classe A2 e, como tal, nenhum valor ‘geral’.
[0216] Os resultados apresentados acima mostram que o tamanho das tabelas pode ser reduzido por um fator de 2 ou até 4, sem afetar adversamente a eficiência do modo CCLM, onde os parâmetros α e β são derivados usando os dois pontos A e B.
[0217] Em outra modalidade, o número de entradas na tabela (isto é, valor de pshift) pode variar dependendo da profundidade de bits (por exemplo, 128 (ou 256) para até 10 bits e 256 (ou 512) para mais de 10 bits). Isso pode ser devido ao fato de que um codificador mais potente ser necessário para codificar amostras representadas por (por exemplo) 16 bits - e, como tal, a complexidade do cálculo usando uma tabela maior não apresentaria um problema tão grande. Nesse caso, um aumento marginal no desempenho da codificação usando um número maior (por exemplo, 512 ou mais) entradas pode ser priorizado.
Número de bits que representam cada entrada nas tabelas (matrizes)
[0218] Para reduzir ainda mais o tamanho da tabela, cada entrada dentro da tabela também pode ser representada em menos do que k = 16 bits iniciais que usa 2 bytes por entrada. Reduzir o valor de k representa diminuir a precisão da divisão, pois ele corresponde essencialmente à redução da magnitude para representar α com números inteiros. As tabelas 6 abaixo mostram o impacto da eficiência da codificação quando diminuindo o número de bits para representar cada entrada (em comparação com k = 16). Tabela 6: Desempenho da codificação quando reduzindo o valor de k.
[0219] As tabelas 6 acima mostram o resultado surpreendente de que, quando as entradas são representadas em 8 bits ou menos, a eficiência da codificação é essencialmente a mesma em comparação com k = 16 bits.
[0220] As tabelas acima mostram resultados de eficiência de codificação aceitáveis obtidos para k, compreendidos no intervalo de 6 a 8. Um resultado semelhante é alcançado para k no intervalo de 9 a 15, mas essa representação ainda exigiria 2 bytes, portanto, não proporcionaria uma grande vantagem na redução da memória necessária para armazenar a tabela.
[0221] As Tabelas 6 mostram que para k igual a 5 bits ou menos, uma degradação maior é observada devido à divisão quando calcular alfa se torna impreciso.
[0222] Assim, foi surpreendentemente encontrado que o melhor compromisso entre desempenho e armazenamento é quando k = 8 bits.
[0223] Comparado com um k = 16 bits, em que cada entrada é representada em 2 bytes, esta presente modalidade pode usar apenas um único byte para representar uma entrada da tabela TAB1 ou TAB3. Isso diminui a complexidade de todos os cálculos envolvendo k e, como tal, reduz a demanda de processamento.
[0224] Um valor de k = 6, 7 ou 8 fornece surpreendentemente desempenho de codificação semelhante a k = 16, com valores mais altos de k fornecendo um desempenho de codificação marginalmente melhor.
[0225] Surpreendentemente, é possível diminuir k em um byte inteiro (8 bits) sem observar uma diminuição apreciável no desempenho de codificação.
[0226] Além disso, é surpreendente descobrir que k pode ser reduzido para um valor tão baixo quanto k = 6, e somente além disso é detectada uma diminuição considerável no desempenho de codificação.
[0227] Ao reduzir k de 16 para 8, a memória total usada para cada tabela é reduzida por um fator de 2.
[0228] Isso é surpreendente, pois normalmente a precisão das operações que envolvem deslocamento de bits é fortemente afetada por pequenas alterações no valor do parâmetro bit-shift, e uma grande degradação no desempenho da codificação seria esperada ao diminuir o valor de k, mesmo que em pequena quantidade. No entanto, os resultados acima mostram, contraintuitivamente, que uma grande alteração no valor de k (por exemplo, de 16 a 6) diminui apenas o desempenho da codificação em uma quantidade desprezível (< 0,14%).
[0229] A escolha de k pode variar dependendo da profundidade de bits (por exemplo, 8 para até 10 bits e 16 para mais de 10 bits). Isso pode ser devido ao fato de que um codificador mais potente seria necessário para codificar amostras representadas por (por exemplo) 16 bits - e, como tal, a complexidade do cálculo usando uma tabela maior não apresentaria um problema tão grande. Nesse caso, um aumento marginal no desempenho da codificação usando um número maior (por exemplo, mais de 8) de bits pode ser priorizado.Combinação de número de entradas e número de bits que representam cada entrada
[0230] A Tabela 7 abaixo mostra os resultados para o desempenho da codificação para variar k de 8 a 5 quando existem 256 entradas em cada tabela (ou seja, uma combinação dos dois conjuntos de resultados apresentados nas tabelas 3 e 6 acima) - em comparação com uma linha de base de k = 16 e 512 entradas em cada tabela. Tabela 7: Desempenho da codificação ao reduzir o valor k e o número de entradas de 512 para 256
[0231] Os resultados da eficiência de codificação acima mostram o resultado surpreendente de que, usando duas tabelas (TAB1 e TAB3) com 256 entradas codificadas usando um único byte cada (ou seja, k < 8), resultados semelhantes podem ser obtidos em comparação com o caso de duas tabelas com 512 entradas representadas em 2 bytes. Uma vantagem particular desta modalidade é a redução por um fator de 4 da memória necessária para armazenar essas tabelas TAB1 e TAB3 sem afetar o resultado da eficiência da codificação. Nesta modalidade particular, a memória necessária para representar as duas tabelas (TAB1 e TAB3) é: 2 * 256 * 8 = 4092 bits, que podem ser armazenados em 512 bytes.
[0232] A Tabela 8 abaixo mostra os resultados do desempenho da codificação para variar k de 8 a 5 quando há 128 entradas em cada tabela (ou seja, uma combinação dos dois conjuntos de resultados apresentados nas tabelas 4 e 6 acima) - em comparação com uma linha de base de k = 16 e 512 entradas em cada tabela. Tabela 8: Desempenho da codificação ao reduzir o valor k e o número de entradas de 512 para 128
[0233] Os resultados da eficiência de codificação acima mostram o resultado surpreendente de que, usando duas tabelas (TAB1 e TAB3) tendo 128 entradas codificadas usando um único byte cada (isto é, k < 8), resultados semelhantes podem ser obtidos em comparação com o caso de duas tabelas com 512 entradas representadas em 2 bytes. É particularmente surpreendente que, em vários exemplos, o uso de 128 entradas realmente melhore o desempenho da codificação em comparação com o uso de 256 entradas. Por exemplo, para k = 8 (um byte por entrada), os resultados mostram que um tamanho de tabela de 128 resulta em melhor desempenho de codificação em comparação com uma tabela de 256 entradas.
[0234] Uma vantagem particular desta modalidade é a redução por um fator de 8 da memória necessária para armazenar essas tabelas TAB1 e TAB3 sem afetar o resultado da eficiência da codificação. Nesta modalidade particular, a memória necessária para representar as duas tabelas (TAB1 e TAB3) é: 2 * 128 * 8 = 2046 bits, que podem ser armazenados em 256 bytes.
[0235] O modo CCLM pode, portanto, usar esse método de divisão para recuperar os parâmetros α e β que podem ser implementados através da aritmética de inteiros para uma implementação eficiente de hardware.
[0236] Em particular, foi demonstrado que uma combinação de reduzir o número de entradas na tabela e reduzir o tamanho de cada entrada não resulta em uma combinação de redução no desempenho (como seria de esperar), mas essencialmente o mesmo desempenho é alcançado quando combinando a redução no número de entradas na tabela e a redução no tamanho de cada entrada em comparação com a execução independente.
[0237] Para completar, a tabela 9 mostra resultados parciais quando uma tabela de N = 64 entradas é usada em comparação com uma linha de base de k = 16 e N = 512. Nota-se que a perda de desempenho é significativa para a classe A1 (que é o principal objetivo de CVV) nas componentes U e V: Tabela 9: Resultados de desempenho de codificação parcial quando reduzindo o valor k e o número de entradas de 512 para 64 Representação de α
[0238] Em outra modalidade, o valor do parâmetro α é modificado de modo que possa ser representado nos “L” bits. Com o processo de derivação de α e β descrito acima, o valor de α pode atingir até 17 bits quando k for igual a 8 (e até 25 bits se k = 16). Um motivo principal para modificar o valor de α é limitar a largura de bit da multiplicação na fórmula de predição abaixo:onde Cc é o valor predito de Croma correspondente ao valor de Luma Lc, e α e β são os parâmetros da inclinação (que podem ser derivados como descrito acima).
[0239] Se as amostras de luma são codificadas em 10 bits, significa que é preciso que a malha principal de predição seja capaz de lidar com a multiplicação de até 10 bits por 17 bits, o que é computacionalmente complexo (e pode utilizar grandes quantidades de memória). Nesta modalidade, o valor de α é modificado de modo que a multiplicação não exceda 16 bits. Esse cálculo é adequado para a implementação de hardware - por exemplo, um processador de 16 bits pode realizar o cálculo usando um único registro de memória.
[0240] Para conseguir isso, α precisa ser representado por 6 bits ou menos. Para alcançar essa representação de 6 bits, a faixa de α pode ser ‘cortada’ de modo que valores maiores sejam forçados para uma faixa especificada.
[0241] Em outra modalidade, a magnitude de α é determinada de modo que seja reduzida, dividindo-a por uma quantidade apropriada, e ajustando-se o parâmetro de deslocamento k consequentemente. A determinação da quantidade do ajuste no valor de deslocamento (k) compreende encontrar a posição de “bit mais significativo” P (uma operação clássica, realizada contando, por exemplo, os 0s iniciais ou adotando o logaritmo de base 2). Nesse caso, se estiver acima de um limite L (5 ou 6 na modalidade preferencial), as seguintes operações são executadas:ou seja, α é dividido por um fator 2(P-L) e o valor de k é compensado por uma quantidade oposta (L-P).
[0242] O valor de L pode depender da profundidade de bits, mas pode ser o mesmo para várias profundidade de bits para simplificar as implementações. Além disso, L pode levar em consideração o bit de sinal, ou seja, L = 5.
[0243] Também foi observado que, na maioria dos casos de implementação, o valor do ponto flutuante de α está dentro da faixa [-2,0; 2,0] no modo CCLM. O uso de apenas 6 bits pode, por exemplo, representar 64 valores no intervalo [-2,0; 2,0] com quaisquer valores calculados fora dessa faixa sendo substituídos pelo ponto final da faixa.
[0244] Em qualquer caso, o corte de α em qualquer faixa pode ser realizado antes da redução de sua magnitude. Isso garante que os valores externos sejam removidos antes de iniciar o processamento de redução de magnitude.
[0245] A Figura 11 ilustra maneiras diferentes de selecionar dois pontos (A e B) nas modalidades da invenção.
[0246] A simplificação proposta da derivação tem um impacto na eficiência da codificação. Para reduzir essa perda de eficiência de codificação, a seleção cuidadosa dos dois pontos é uma etapa muito importante.
[0247] Na primeira modalidade, como descrito anteriormente, o mínimo e o máximo dos valores de amostras de luma vizinhas são selecionados correspondendo aos pontos A e B da Figura 11.
[0248] Em uma modalidade alternativa, os dois pontos selecionados são os pontos C e D da Figura 11, que correspondem ao par de amostras de luma e croma correspondentes aos valores mínimo e máximo dos valores de amostras de croma vizinhas. Esta modalidade alternativa é às vezes interessante em termos de eficiência de codificação.
[0249] Em uma modalidade alternativa, o segmento mais longo entre os segmentos [AB] e [CD] é determinado e se o segmento [AB] for maior do que o segmento [CD], os pontos A e B são selecionados, caso contrário, os pontos C e D são selecionados. O comprimento de cada segmento pode ser calculado com uma distância euclidiana. No entanto, outra medida de distância pode ser usada. Esta modalidade melhora a eficiência da codificação em comparação com as duas primeiras. De fato, quando os dois pontos selecionados estão distantes, geralmente o modelo linear gerado é relevante. Consequentemente, o preditor de bloco de croma gerado é relevante para predizer o bloco atual.
[0250] Em uma modalidade alternativa, o segmento mais longo entre todos os segmentos possíveis que podem ser gerados entre A, B, C, D fornece os dois pontos selecionados. Isso corresponde aos segmentos [AB], [CD], [AC], [AD], [CB] e [DB], conforme ilustrado na Figura 11. Esta modalidade melhora a eficiência da codificação em comparação com as anteriores ao preço de uma complexidade mais alta.
[0251] Em uma modalidade preferencial, os pontos que representam o mínimo e o máximo dos valores de amostras de luma RecL’ são definidos de modo a criar os pontos A e B e se uma componente do ponto A é igual à sua componente correspondente de B (xB = xA ou yB = yA), os pontos que representam o mínimo e o máximo dos valores C e D da amostra de croma são selecionados. Esta modalidade obtém a melhor eficiência de codificação porque se xB = xA ou yB = yA, então α (ou L) é respectivamente infinito ou igual a 0 e, consequentemente, o bloco preditor de croma é inutilizável ou equivalente à predição DC. Esse é o caso assim que o numerador ou denominador da fração representativa de α (ou L) for muito baixo (por exemplo, pode ser verificada a seguinte condição: | α | < 0,1): qualquer erro nele (tal como devido à quantização), mesmo que em pequena quantidade, leva a valores muito diferentes de α (ou L). No restante do documento, esses casos, que são basicamente inclinações quase horizontais ou verticais, levam ao que é chamado de inclinação anormal, seja α ou L.
[0252] Em uma modalidade adicional, vários pares de pontos, como todos representados na Figura 11, são testados até que α não seja “anormal”. Esta modalidade melhora a eficiência de codificação da anterior, mas aumenta a complexidade computacional.
[0253] Em uma modalidade alternativa, são calculadas as diferenças entre o máximo e o mínimo das duas componentes (croma e luma). Além disso, a componente com a diferença máxima é selecionada para determinar os dois pontos que definem a linha para o cálculo dos parâmetros do modelo. Esta modalidade é eficiente quando as duas componentes são as duas componentes croma ou duas componentes RGB.
[0254] A seleção dos dois pontos A e B pode ser feita nos valores das amostras do bloco atual. Em uma modalidade, os dois pontos para a derivação do modelo linear simplificado são definidos com base nos valores de amostras do bloco de luma de resolução reduzida atual (505 na Figura 5). Os valores das amostras de luma dos pares de amostras na vizinhança do bloco são comparados com os valores de amostras de luma do bloco de luma. O valor com a ocorrência máxima é selecionado para criar xA e o segundo valor com a ocorrência máxima é selecionado para criar xB. Os valores de croma correspondentes yA e yB são os valores médios das amostras de croma colocadas nos pares de amostras na vizinhança do bloco. Quando α (ou L) é “anormal” (igual a 0 ou próximo de 0 (| α | < 0,1)), xB é um dos valores de luma com menor seleção em vez do segundo valor mais selecionado. Da mesma forma, yB são os valores médios das amostras de croma colocadas. Esta modalidade aumenta a eficiência da codificação em comparação com a modalidade anterior ao preço de uma complexidade mais alta.
[0255] A seleção dos dois pontos A e B pode ser feita nas posições espaciais dos pares de amostras.
[0256] Em modalidades anteriores, é necessário determinar os valores mínimo e máximo para luma (A, B) ou / e para croma (C, D) entre M pares de amostras vizinhas de luma e croma. Isso pode ser considerado como uma complexidade adicional. Portanto, para algumas implementações, é preferencial obter esses dois pontos com uma complexidade mínima.
[0257] Em uma modalidade, um modelo linear é gerado com as amostras de croma RecC (501 na Figura 5) e com as amostras de luma de resolução reduzida da borda RecL’ (503). O primeiro ponto selecionado é a amostra inferior da linha esquerda, referenciado 5004, de luma e a amostra de croma colocada 5001. O segundo ponto selecionado é a amostra de luma superior direita 5003 e a amostra de croma co-localizada 5002. Essa seleção dos dois pontos é muito simples, mas também é menos eficiente do que as modalidades anteriores com base em valores.
[0258] Além disso, se uma das bordas superior ou esquerda não existir, por exemplo, para o bloco na borda de uma imagem ou fatia ou estiver indisponível, por exemplo, por motivos de complexidade ou resiliência a erros, então duas amostras (por exemplo, cujo luma é 504 ou 5003 na borda disponível) são selecionadas em vez da que está faltando. Assim, pode-se ver que existem várias condições para selecionar as amostras.
[0259] Uma outra modalidade é descrita na qual, se podem ser selecionados pontos não suficientes para calcular a inclinação, ou resultam em α (ou L) “anormal”, então um ponto padrão pode ser selecionado. Esta modalidade também pode ser aplicada ao modo MMLM com adaptação. Para criar os parâmetros do modelo linear para o primeiro grupo, o primeiro ponto é a amostra inferior da segunda linha esquerda (5009) de luma e a amostra de croma colocada (5005). Além disso, o segundo ponto é a amostra superior de luma da primeira linha esquerda (5010) e a amostra de croma colocada (5006).
[0260] Para criar os parâmetros do modelo linear para o segundo grupo, o primeiro ponto é a amostra esquerda da primeira linha superior (5011) de luma e a amostra de croma colocada (5007). E o segundo ponto é a amostra de luma direita da segunda linha superior (5012) e a amostra de croma colocada (5008).
[0261] Esta modalidade simplifica a seleção dos quatro pontos para o primeiro e o segundo grupo.
[0262] Em ainda outra modalidade, o limite do modo MMLM é o valor de luma dos pontos 5010 ou 5011, ou seja, o ponto superior direito da vizinhança esquerda e o ponto inferior esquerdo da vizinhança superior no exemplo, ou uma média entre esses pontos. Esta modalidade adicional simplifica o cálculo do limite.
[0263] Em ainda uma modalidade adicional a todas essas modalidades relacionadas à seleção de dois pontos, o processo de redução de resolução de luma é desativado e é substituído por uma decimação, isto é, uma em cada duas amostras de luma é usada para as amostras da RecL’. Nesse caso, as etapas 1001 na Figura 10 e 1201 na Figura 12, que são descritas em detalhes abaixo, seriam ignoradas. Esta modalidade reduz a complexidade com um impacto menor na eficiência da codificação.
[0264] Os pontos A, B, C e D são determinados com base nas versões decodificadas das amostras e, portanto, podem não corresponder aos valores originais das amostras. Isso pode causar segmentos anormalmente curtos, ou apenas estimativas com ruído, como já descrito ao definir o que é uma inclinação “anormal”. A e C são os dois pontos mais baixos e B e D são os dois mais altos, em vez de usar qualquer um deles, o ponto E definido como a média entre A e C e o ponto F definido como a média entre B e D pode ser utilizado, ao custo de algumas operações suplementares simples:
[0265] Obviamente, se yE - yF ou xE - xF for igual a 0 ou for muito baixo (ou seja, a inclinação derivada é “anormal”), então os pontos A, B, C e D serão considerados normalmente para obter melhores parâmetros.
[0266] Dever-se-ia entender a partir disso que os dois pontos usados no cálculo da inclinação no modelo podem não ser dois pontos reais feitos a partir de valores de amostras de RecL’ ou RecC. Isso explica o uso da expressão “determinar” na etapa 1003 em vez de “selecionar”.
[0267] Em ainda uma outra modalidade, para o modo MMLM, se o parâmetro α (ou L) que define a inclinação de um grupo for “anormal”, os parâmetros LM correspondentes serão configurados iguais aos parâmetros LM do outro grupo, ou em outro grupo se mais de dois grupos de parâmetros lineares. A Figura 12 ilustra esta modalidade. Após a determinação de (α1, β1) e (α2, β2) definindo os dois modelos para os dois grupos na etapa 1203, α1 e α2 são testados para verificar se são iguais a 0 nas etapas 1204 e 1205. Se for esse o caso, o parâmetro de inclinação “anormal” α (ou L) é definido igual ao outro parâmetro de inclinação α; da mesma forma, o valor do parâmetro β correspondente do outro grupo também é usado nas etapas 1206 e 1207. Portanto, nesse caso, se apenas um conjunto de parâmetros for usado, qualquer que seja o valor dos valores de amostras de luma de resolução reduzida do bloco atual, não há comparação com o limite, a mesma complexidade que o modo CCLM é obtida. A vantagem desta modalidade é uma melhora da eficiência de codificação com uma pequena complexidade, porque nenhum parâmetro de modelo linear adicional precisa ser derivado.
[0268] Em uma modalidade alternativa, quando um parâmetro de inclinação α (ou L) é “anormal”, um conjunto de parâmetros lineares é derivado novamente considerando todas as amostras iniciais do MMLM (corresponde à derivação do CCLM com duas linhas superiores e duas linhas vizinhas), em vez de uma linha superior e uma linha vizinha). Esta modalidade fornece melhor eficiência de codificação do que a anterior, mas é mais complexa porque é necessário re-derivar um conjunto de parâmetros de modelo linear.
[0269] A derivação LM simplificada com dois pontos, conforme descrito neste documento, geralmente é menos eficiente que a derivação LMS clássica, exceto se ela não substituir toda a derivação LMS quando vários modos LM estiverem competindo.
[0270] Em uma modalidade, a derivação LM com dois pontos é usada apenas para o modo CCLM para derivar um preditor de bloco de croma. Esta modalidade fornece melhoras na eficiência de codificação.
[0271] Em uma modalidade, a derivação com dois pontos é usada apenas para o modo MMLM, pois é o método de predição mais complexo.
[0272] Em uma modalidade, a derivação LM com dois pontos é usada para o modo CCLM e o modo MMLM para derivar um preditor de bloco de croma. Esta modalidade tem eficiência de codificação semelhante à de JEM, mas reduz a complexidade do pior caso, usando essa derivação LM simplificada para a geração dos preditores de blocos de croma. De fato, a predição de croma baseada em luma é o modo que apresenta a complexidade de pior caso dentre os modos de modelo linear de predição. Ela é mais complexa que a predição de croma residual.
[0273] Em uma modalidade, a derivação LM com dois pontos substitui todas as derivações LMS (geração de preditor de bloco de croma e predição de residual). Esta modalidade reduz a eficiência da codificação em comparação com JEM, mas diminui significativamente a complexidade. Observa-se que essas duas modalidades fornecem uma melhora na eficiência de codificação, independentemente do método de derivação usado na etapa 1203 para parâmetros.
[0274] Em ainda outra modalidade, se um ou ambos os parâmetros de inclinação α (ou L) forem “anormais”, um valor padrão (tal como - (1 << S) / 8) é usado nas etapas 1206 e / ou 1207 , e o valor correspondente β é calculado.
[0275] Em ainda uma outra modalidade, vários modos LM estão competindo no lado do codificador, e os elementos de sintaxe podem sinalizar o modo LM selecionado no fluxo de bits no lado do decodificador. Essa sinalização pode estar no nível de fatia (ou PPS ou SPS) para indicar quais conjuntos devem ser usados ou, pelo menos fornecer os candidatos para uma seleção no nível de bloco. Pelo menos uma das diferenças entre esses modos lineares concorrentes é o conjunto de dois pontos usados para derivar os parâmetros LM. O conjunto de dois pontos e o método para gerar esses dois pontos definem diferentes modos lineares na competição. Por exemplo, para um modo LM, os dois pontos são determinados com base nos valores mínimo e máximo de luma e, para outro modo LM, os dois pontos são selecionados com base nos valores máximo e mínimo de croma.
[0276] Outra modalidade consiste em definir um número de conjuntos a partir de possíveis localizações, conforme ilustrado na Figura 5. Embora quatro pontos diferentes possam levar a até doze pares diferentes, os que resultam nos maiores valores para o numerador e denominador na equação para o cálculo do parâmetro de inclinação α (ou L) pode ser preferencial. O codificador constrói a lista de pares, e os classifica de acordo com algum critério (tal como a distância na componente luma, ou distância cartesiana usando os componentes luma e croma), possivelmente removendo alguns deles (por exemplo, se a inclinação estiver muito próxima de outra) e, assim, construindo a lista de parâmetros que podem ser selecionados e sinalizados.
[0277] A vantagem dessas modalidades é uma melhora na eficiência de codificação.
[0278] As descrições dessas modalidades mencionam a componente luma e uma componente croma, mas podem ser facilmente adaptadas a outras componentes, como ambas componentes croma ou componentes RGB. De acordo com uma modalidade, a presente invenção é usada ao predizer um primeiro valor de amostra de componente croma a partir de uma segunda componente croma. Em outra modalidade, a presente invenção é usada ao predizer um valor de amostra de uma componente a partir de mais de um valor de amostra de mais de uma componente. Entende-se que, nesse caso, o modelo linear é derivado com base em dois pontos / conjuntos, cada ponto / conjunto compreendendo um valor de amostra de uma componente e os mais de um valor de amostra de mais de uma componente. Por exemplo, se os valores de amostras de duas componentes forem usados para predizer o valor de amostra de uma componente, cada ponto / conjunto poderá ser representado como uma posição em um espaço tridimensional, e o modelo linear é baseado em uma linha reta que passa pelas duas posições no espaço tridimensional que correspondem aos dois pontos / conjuntos dos valores de amostras reconstruídos.
[0279] A Figura 13 é um diagrama de blocos esquemático de um dispositivo de computação 1300 para implementação de uma ou mais modalidades da invenção. O dispositivo de computação 1300 pode ser um dispositivo como um microcomputador, uma estação de trabalho ou um dispositivo portátil leve. O dispositivo de computação 1300 compreende um barramento de comunicação conectado a: - uma unidade central de processamento 1301, tal como um microprocessador, designada CPU; - uma memória de acesso aleatório 1302, denominada RAM, para armazenar o código executável do método de modalidades da invenção, bem como os registros adaptados para registrar variáveis e parâmetros necessários para implementar o método de codificação ou decodificação de pelo menos parte de uma imagem de acordo com as modalidades da invenção, a capacidade de memória da mesma pode ser expandida por uma RAM opcional conectada a uma porta de expansão, por exemplo; - uma memória somente de leitura 1303, denominada ROM, para armazenar programas de computador para implementar modalidades da invenção; - uma interface de rede 1304 é tipicamente conectada a uma rede de comunicação através da qual os dados digitais a serem processados são transmitidos ou recebidos. A interface de rede 1304 pode ser uma única interface de rede, ou composta por um conjunto de diferentes interfaces de rede (por exemplo, interfaces com e sem fio, ou diferentes tipos de interfaces com ou sem fio). Pacotes de dados são gravados na interface de rede para transmissão ou são lidos a partir da interface de rede para recepção sob o controle do aplicativo de software em execução na CPU 1301; - uma interface de usuário 1305 pode ser usada para receber entradas a partir de um usuário ou para exibir informação para um usuário; - um disco rígido 1306 indicado como HD pode ser fornecido como um dispositivo de armazenamento em massa; - um módulo I / O 1307 pode ser usado para receber / enviar dados a partir de / para dispositivos externos, tal como uma fonte ou tela de vídeo.
[0280] O código executável pode ser armazenado na memória somente de leitura 1303, no disco rígido 1306 ou em um suporte digital removível, tal como, por exemplo, um disco. De acordo com uma variante, o código executável dos programas pode ser recebido por meio de uma rede de comunicação, via interface de rede 1304, de modo a ser armazenado em um dos suportes de armazenamento do dispositivo de comunicação 1300, tal como o disco rígido 1306, antes de ser executado.
[0281] A unidade de processamento central 1301 é adaptada para controlar e direcionar a execução das instruções ou partes do código de software do programa ou programas de acordo com modalidades da invenção, cujas instruções são armazenadas em um dos suportes de armazenamento mencionados acima. Após ligar, a CPU 1301 é capaz de executar instruções da memória RAM principal 1302 relacionadas a um aplicativo de software depois que essas instruções foram carregadas a partir do programa ROM 1303 ou do disco rígido (HD) 1306, por exemplo. Tal aplicativo de software, quando executado pela CPU 1301, faz com que as etapas do método de acordo com a invenção sejam executadas.
[0282] Qualquer etapa dos métodos de acordo com a invenção pode ser implementada em software pela execução de um conjunto de instruções ou programa por uma máquina de computação programável, tal como um PC (“Computador Pessoal”), um DSP (“Processador de Sinal Digital”) ou um microcontrolador; ou então implementada no hardware por uma máquina ou um componente dedicado, tal como um FPGA (“Arranjo de portas programáveis em campo”) especialmente para a seleção de Mínimos e Máximos, ou um ASIC (“Circuito integrado de aplicação específica”).
[0283] Nota-se também que, embora alguns exemplos sejam baseados em HEVC para fins ilustrativos, a invenção não está limitada a HEVC. Por exemplo, a presente invenção também pode ser usada em qualquer outro processo de predição / estimativa em que uma relação entre os valores de amostras de duas ou mais componentes possa ser estimado / predito com um modelo, em que o modelo é um modelo aproximado determinado com base em pelo menos dois conjuntos de valores de amostras de componentes relacionados / associados selecionados a partir de todos os conjuntos disponíveis dos valores de amostras de componentes relacionados / associados.
[0284] Entende-se que cada ponto correspondente a um par de amostras (isto é, um conjunto de valores de amostras associados para diferentes componentes) pode ser armazenado e / ou processado em termos de uma matriz. Por exemplo, os valores de amostras de cada componente podem ser armazenados em uma matriz para que cada valor de amostra desse componente seja referenciável / acessível / obtido através de referência a um elemento dessa matriz, usando um índice para esse valor de amostra, por exemplo. Alternativamente, uma matriz pode ser usada para armazenar e processar cada par de amostras em que cada valor de amostra dos pares de amostras é acessível / obtido como um elemento da matriz.
[0285] Entende-se também que qualquer resultado de comparação, determinação, avaliação, seleção ou consideração descrito acima, por exemplo, uma seleção feita durante um processo de codificação, pode ser indicado ou determinável a partir de dados em um fluxo de bits, por exemplo, um sinalizador ou dados indicativos do resultado, de modo que o resultado indicado ou determinado possa ser usado no processamento, em vez de realmente executar a comparação, determinação, avaliação, seleção ou consideração, por exemplo, durante um processo de decodificação.
[0286] Embora a presente invenção tenha sido descrita acima com referência a modalidades específicas, a presente invenção não está limitada às modalidades específicas, e modificações serão evidentes para um versado na técnica, que se enquadra dentro do escopo da presente invenção.
[0287] Muitas modificações e variações adicionais serão sugeridas aos versados na técnica ao fazer referência às modalidades ilustrativas anteriores, que são dadas apenas a título de exemplo e que não são destinadas a limitar o escopo da invenção, que é determinado exclusivamente pelas reivindicações em anexo. Em particular, as diferentes características de diferentes modalidades podem ser intercambiadas, quando apropriado.
[0288] Cada uma das modalidades da invenção descrita acima pode ser implementada apenas ou como uma combinação de uma pluralidade das modalidades. Além disso, características de diferentes modalidades podem ser combinadas onde necessário ou quando a combinação de elementos ou características de modalidades individuais em uma única modalidade é benéfica.
[0289] Cada característica descrita nesta especificação (incluindo quaisquer reivindicações, resumo e desenhos) pode ser substituída por características alternativas que atendem ao mesmo objetivo, equivalente ou similar, a menos que expressamente indicado de outra forma. Assim, a menos que expressamente indicado de outra forma, cada característica descrita é um exemplo apenas de uma série genérica de características equivalentes ou semelhantes.
[0290] Nas reivindicações, a palavra “compreendendo” não exclui outros elementos ou etapas, e o artigo indefinido “um” ou “uma” não exclui uma pluralidade.O simples fato de diferentes características serem citadas em reivindicações dependentes mutuamente diferentes não indica que uma combinação dessas características não possa ser utilizada vantajosamente.
[0291] As seguintes cláusulas numeradas também definem certas modalidades: 1. Método para derivar um modelo linear para obter uma amostra de primeira componente para um bloco de primeira componente a partir de uma amostra reconstruída de segunda componente associada de um bloco de segunda componente no mesmo quadro, o método compreendendo: - determinar dois pontos, sendo cada ponto definido por duas variáveis, a primeira variável correspondendo a um valor de amostra de segunda componente, a segunda variável correspondendo a um valor de amostra de primeira componente, com base em amostras reconstruídas tanto da primeira componente quanto da segunda componente; - determinar os parâmetros de uma equação linear representando uma linha reta que passa pelos dois pontos; e - derivar o modelo linear definido pelos parâmetros de linha reta. 2. Método da cláusula 1, em que os dois pontos são determinados com base em pares de amostras na vizinhança do bloco de segunda componente. 3. Método da cláusula 2, em que os dois pontos são determinados com base nos valores de amostras dos pares de amostras na vizinhança do bloco de segunda componente. 4. Método da cláusula 3, em que os dois pontos correspondem respectivamente aos pares de amostras com o menor valor de amostra de segunda componente e com o maior valor de amostra de segunda componente. 5. Método da cláusula 3, em que os dois pontos correspondem respectivamente aos pares de amostras com o menor valor de amostra de primeira componente e com o maior valor de amostra de primeira componente. 6. Método da cláusula 3, que compreende: - determinar dois primeiros pontos correspondentes respectivamente aos pares de amostras com o menor valor de amostra de segunda componente e com o maior valor de amostra de segunda componente; - determinar dois segundos pontos correspondentes respectivamente aos pares de amostras com o menor valor de amostra de primeira componente e com o maior valor de amostra de primeira componente; e - determinar os dois pontos como os dois primeiros pontos se eles formarem um segmento mais longo, e determinar os dois pontos como os dois segundos pontos, caso contrário. 7. Método da cláusula 3, que compreende: - determinar dois primeiros pontos correspondentes respectivamente aos pares de amostras com o menor valor de amostra de segunda componente e com o maior valor de amostra de segunda componente; - determinar dois segundos pontos correspondentes respectivamente aos pares de amostras com o menor valor de amostra de primeira componente e com o maior valor de amostra de primeira componente; e - determinar os dois pontos entre os dois primeiros pontos e os dois segundos pontos como os dois pontos que formam o segmento mais longo. 8. Método da cláusula 3, que compreende: - determinar dois primeiros pontos correspondentes respectivamente aos pares de amostras com o menor valor de amostra de segunda componente e com o maior valor de amostra de segunda componente; - determinar dois segundos pontos correspondentes respectivamente aos pares de amostras com o menor valor de amostra de primeira componente e com o maior valor de amostra de primeira componente; e - determinar os dois pontos como os dois primeiros pontos se todas as suas variáveis forem diferentes, e determinar os dois pontos como os dois segundos pontos, caso contrário. 9. Método da cláusula 3, que compreende: - determinar dois primeiros pontos correspondentes respectivamente aos pares de amostras com o menor valor de amostra de segunda componente e com o maior valor de amostra de segunda componente; - determinar dois segundos pontos correspondentes respectivamente aos pares de amostras com o menor valor de amostra de primeira componente e com o maior valor de amostra de primeira componente; e - determinar os dois pontos como os dois primeiros pontos se o parâmetro de inclinação da linha reta definida por esses dois pontos for maior do que um determinado limite, e determinar os dois pontos como os dois segundos pontos, caso contrário. 10. Método da cláusula 3, que compreende: - determinar dois primeiros pontos correspondentes respectivamente aos pares de amostras com o menor valor de amostra de segunda componente e com o maior valor de amostra de segunda componente; - determinar dois segundos pontos correspondentes respectivamente aos pares de amostras com o menor valor de amostra de primeira componente e com o maior valor de amostra de primeira componente; e - determinar os dois pontos como os dois primeiros pontos se a diferença entre o valor de amostra de segunda componente mais baixo e o valor da amostra de segunda componente mais alto for maior do que a diferença entre o valor de amostra de primeira componente mais baixo e o valor de amostra de primeira componente mais alto, e determinar os dois pontos como os dois segundos pontos, caso contrário. 11. Método da cláusula 2, em que os dois pontos são determinados com base na posição do valor de amostra de segunda componente dos pares de amostras na vizinhança do bloco de segunda componente. 12. Método da cláusula 11, em que os dois pontos são determinados como correspondendo aos pares de amostras em uma posição predeterminada na vizinhança do bloco de segunda componente. 13. Método da cláusula 12, que compreende adicionalmente determinar pelo menos um dos dois pontos como correspondendo ao par de amostras em uma segunda posição predeterminada quando o par de amostras em uma posição predeterminada não está disponível. 14. Método da cláusula 1, em que os dois pontos são determinados com base em pares de amostras na vizinhança do bloco de segunda componente e nos valores de amostras do bloco de segunda componente. 15. Método da cláusula 14, em que: - as primeiras variáveis dos dois pontos são determinadas como o valor de amostra, entre os pares de amostras na vizinhança do bloco de segunda componente, com a ocorrência máxima no bloco de segunda componente e a segunda ocorrência máxima no bloco de segunda componente; - as segundas variáveis dos dois pontos são determinadas como o valor de amostra de primeira componente correspondente, com base nos pares de amostras na vizinhança do bloco de segunda componente. 16. Método das cláusulas 1 a 15, em que: - as amostras do bloco de segunda componente são organizadas em pelo menos dois grupos; e - dois pontos são determinados para a definição de um modelo linear para cada grupo de amostras do bloco de segunda componente. 17. Método da cláusula 16, em que se os dois pontos determinados para um grupo correspondem a um parâmetro de inclinação menor do que um limite predeterminado, eles serão substituídos por dois pontos determinados para outro grupo. 18. Método da cláusula 16, em que se os dois pontos determinados para um grupo correspondem a um parâmetro de inclinação menor do que um limite predeterminado, então dois novos pontos são determinados com base nas amostras de todos os grupos considerados como um único grupo. 19. Método para obter uma amostra de primeira componente para um bloco de primeira componente a partir de uma amostra de segunda componente reconstruída associada de um bloco de segunda componente no mesmo quadro, que compreende: - definir uma pluralidade de modos de derivação de modelo linear compreendendo modos CCLM usando um único modelo linear e modos MMLM usando vários modelos lineares; e - selecionar um dos modos de derivação de modelo linear para obter as amostras de primeira componente para um bloco de primeira componente, em que: - pelo menos um dos modos de derivação de modelo linear usa um método de derivação de acordo com qualquer uma das cláusulas 1 a 18. 20. Método da cláusula 19, em que apenas os modos CCLM usam um método de derivação de acordo com qualquer uma das cláusulas 1 a 18. 21. Método da cláusula 19, em que apenas os modos MMLM usam um método de derivação de acordo com qualquer uma das cláusulas 1 a 18. 22. Método para codificar uma ou mais imagens em um fluxo de bits, que compreende derivar um modelo linear de acordo com qualquer uma das cláusulas 1 a 18. 23. Método para codificar uma ou mais imagens em um fluxo de bits, que compreende obter uma amostra de primeira componente para um bloco de primeira componente das uma ou mais imagens a partir de um bloco de amostra de segunda componente reconstruída associado de acordo com qualquer uma das cláusulas 19 a 21. 24. Método para decodificar uma ou mais imagens de um fluxo de bits, que compreende derivar um modelo linear de acordo com qualquer uma das cláusulas 1 a 18. 25. Método para decodificar uma ou mais imagens de um fluxo de bits, que compreende obter uma amostra de primeira componente para um bloco de primeira componente das uma ou mais imagens a partir de um bloco de amostra de segunda componente reconstruída associado, de acordo com qualquer uma das cláusulas 19 a 21. 26. Dispositivo para derivar um modelo linear para obter uma amostra de primeira componente para um bloco de primeira componente a partir de uma amostra de segunda componente reconstruída associada de um bloco de segunda componente no mesmo quadro, que compreende um meio para: - determinar dois pontos, sendo cada ponto definido por duas variáveis, a primeira variável correspondendo a um valor de amostra de segunda componente, a segunda variável correspondendo a um valor de amostra de primeira componente, com base em amostras reconstruídas da primeira componente e da segunda componente; - determinar os parâmetros de uma equação linear representando uma linha reta que passa pelos dois pontos; e - derivar o modelo linear definido pelos parâmetros de linha reta. 27. Dispositivo da cláusula 26, em que os dois pontos são determinados com base em pares de amostras na vizinhança do bloco de segunda componente. 28. Dispositivo da cláusula 27, em que os dois pontos são determinados com base nos valores de amostras dos pares de amostras na vizinhança do bloco de segunda componente. 29. Dispositivo da cláusula 26, em que os dois pontos correspondem respectivamente aos pares de amostras com o menor valor de amostra de segunda componente e com o maior valor de amostra de segunda componente. 30. Dispositivo da cláusula 26, em que os dois pontos correspondem respectivamente aos pares de amostras com o menor valor de amostra de primeira componente e com o maior valor de amostra de primeira componente. 31. Dispositivo da cláusula 26, em que o meio é configurado para executar: - determinar dois primeiros pontos correspondentes respectivamente aos pares de amostras com o menor valor de amostra de segunda componente e com o maior valor de amostra de segunda componente; - determinar dois segundos pontos correspondentes respectivamente aos pares de amostras com o menor valor de amostra de primeira componente e com o maior valor de amostra de primeira componente; e - determinar os dois pontos como os dois primeiros pontos se eles formam um segmento mais longo e determinar os dois pontos como os dois segundos pontos, caso contrário. 32. Dispositivo da cláusula 26, em que o meio é configurado para executar: - determinar dois primeiros pontos correspondentes respectivamente aos pares de amostras com o menor valor de amostra de segunda componente e com o maior valor de amostra de segunda componente; - determinar dois segundos pontos correspondentes respectivamente aos pares de amostras com o menor valor de amostra de primeira componente e com o maior valor de amostra de primeira componente; e - determinar os dois pontos entre os dois primeiros pontos e os dois segundos pontos como os dois pontos que formam o segmento mais longo. 33. Dispositivo da cláusula 26, em que o meio é configurado para executar: - determinar dois primeiros pontos correspondentes respectivamente aos pares de amostras com o menor valor de amostra de segunda componente e com o maior valor de amostra de segunda componente; - determinar dois segundos pontos correspondentes respectivamente aos pares de amostras com o menor valor de amostra de primeira componente e com o maior valor de amostra de primeira componente; e - determinar os dois pontos como os dois primeiros pontos se todas as suas variáveis forem diferentes, e determinar os dois pontos como os dois segundos pontos, caso contrário. 34. Dispositivo da cláusula 26, em que o meio é configurado para executar: - determinar dois primeiros pontos correspondentes respectivamente aos pares de amostras com o menor valor de amostra de segunda componente e com o maior valor de amostra de segunda componente; - determinar dois segundos pontos correspondentes respectivamente aos pares de amostras com o menor valor de amostra de primeira componente e com o maior valor de amostra de primeira componente; e - determinar os dois pontos como os dois primeiros pontos se o parâmetro de inclinação da linha reta definida por esses dois pontos for maior do que um determinado limite, e determinar os dois pontos como os dois segundos pontos, caso contrário. 35. Dispositivo da cláusula 26, em que o meio é configurado para executar: - determinar dois primeiros pontos correspondentes respectivamente aos pares de amostras com o menor valor de amostra de segunda componente e com o maior valor de amostra de segunda componente; - determinar dois segundos pontos correspondentes respectivamente aos pares de amostras com o menor valor de amostra de primeira componente e com o maior valor de amostra de primeira componente; e - determinar os dois pontos como os dois primeiros pontos se a diferença entre o valor de amostra de segunda componente mais baixo e o valor de amostra de segunda componente mais alto for maior do que a diferença entre o valor de amostra de primeira componente mais baixo e o valor de amostra de primeira componente mais alto, e determinar os dois pontos como os dois segundos pontos, caso contrário. 36. Dispositivo da cláusula 27, em que os dois pontos são determinados com base na posição dos pares de amostras na vizinhança do bloco de segunda componente. 37. Dispositivo da cláusula 36, em que os dois pontos são determinados como correspondendo aos pares de amostras em uma posição predeterminada na vizinhança do bloco de segunda componente. 38. Dispositivo da cláusula 37, que compreende adicionalmente determinar pelo menos um dos dois pontos como correspondendo ao par de amostras em uma segunda posição predeterminada quando o par de amostras em uma posição predeterminada não está disponível. 39. Dispositivo da cláusula 26, em que os dois pontos são determinados com base em pares de amostras na vizinhança do bloco de segunda componente e nos valores de amostras do bloco de segunda componente. 40. Dispositivo da cláusula 39, em que: - as primeiras variáveis dos dois pontos são determinadas como o valor de amostra com a ocorrência máxima no bloco de segunda componente e a segunda ocorrência máxima no bloco de segunda componente; - as segundas variáveis dos dois pontos são determinadas como o valor de amostra de primeira componente correspondente, com base nos pares de amostras na vizinhança do bloco de segunda componente. 41. Dispositivo de qualquer uma das cláusulas 26 a 40, em que: - as amostras do bloco de segunda componente são organizadas em pelo menos dois grupos; e - dois pontos são determinados para a definição de um modelo linear para cada grupo de amostras do bloco de segunda componente. 42. Dispositivo da cláusula 41, em que se os dois pontos determinados para um grupo correspondem a um parâmetro de inclinação menor do que um limite predeterminado, eles serão substituídos por dois pontos determinados para outro grupo. 43. Dispositivo da cláusula 41, em que se os dois pontos determinados para um grupo correspondem a um parâmetro de inclinação menor do que um limite predeterminado, então dois novos pontos são determinados com base nas amostras de todos os grupos considerados como um único grupo. 44. Dispositivo para obter uma amostra de primeira componente para um bloco de primeira componente a partir de uma amostra de segunda componente reconstruída associada de um bloco de segunda componente no mesmo quadro, que compreende um meio para: - definir uma pluralidade de modos de derivação de modelo linear compreendendo modos CCLM usando um único modelo linear e modos MMLM usando vários modelos lineares; - selecionar um dos modos de derivação de modelo linear para obter as amostras de primeira componente para um bloco de primeira componente; em que: - pelo menos alguns dos modos de derivação de modelo linear usando um método de derivação de acordo com qualquer uma das cláusulas 1 a 18. 45. Dispositivo da cláusula 44, em que apenas os modos CCLM usam um método de derivação de acordo com qualquer uma das cláusulas 1 a 18. 46. Dispositivo da cláusula 44, em que apenas os modos MMLM usam um método de derivação de acordo com qualquer uma das cláusulas 1 a 18. 47. Dispositivo para codificar imagens, que compreende um meio para derivar um modelo linear de acordo com qualquer uma das cláusulas 1 a 18. 48. Dispositivo para decodificar imagens, que compreende um meio para derivar um modelo linear de acordo com qualquer uma das cláusulas 1 a 18. 49. Produto de programa de computador para um aparelho programável, que compreende uma sequência de instruções para implementar um método de acordo com qualquer uma das cláusulas 1 a 25, quando carregado e executado pelo aparelho programável. 50. Suporte legível por computador, que armazena um programa que, quando executado por um microprocessador ou sistema de computador em um dispositivo, faz com que o dispositivo execute um método de acordo com qualquer uma das cláusulas 1 a 25. 51. Programa de computador, que, após a execução, faz com que o método de acordo com qualquer uma das cláusulas 1 a 25 seja executado.

Claims (8)

1. Método para codificar imagens pela derivação de parametros(α,β) de um modelo linear (1208) para obter uma amostra de croma (501, 1202) de uma área de referência (502) a partir de uma amostra de luma (503, 1201) associada da área de referência (502), caracterizado pelo fato de que compreende: - determinar dois pares de valores (1003, 1004, 1203, 1204, 1205, 1206, 1207) para determinar os parâmetros do modelo linear (1208), sendo cada um dos dois pares ((a1,β1), (a2,β2)>) definidos por duas variáveis, uma primeira variável das duas variáveis correspondendo a uma amostra de luma (503, 1201), uma segunda variável das duas variáveis correspondendo a uma amostra de croma (501, 1202); - determinar os parâmetros do modelo linear (1208) incluindo um parâmetro correspondente a uma inclinação (α) do modelo linear pelo uso dos dois pares de valores; e - codificar a área de referência (502) usando os parâmetros do modelo linear, em que a determinação do parâmetro correspondendo à inclinação utiliza aritmética de inteiros; em que uma magnitude do parâmetro correspondente à inclinação (a) é restringida de modo que um número de bits para representar a inclinação (a) em aritmética de inteiros não exceda 5 bits, e em que quando ao parâmetro correspondente à inclinação é atribuído um valor zero, a um parâmetro correspondente a uma interceptação do modelo linear é atribuído um valor mínimo de amostra de croma dentre os dois pares de valores.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a determinação do parâmetro correspondente à inclinação (α) do modelo linear compreende determinar uma divisão, a dita determinação compreendendo reduzir uma magnitude da divisão pela aplicação de deslocamento de bits para a divisão.
3. Método para decodificar imagens pela derivação de parâmetros de um modelo linear (1208) para obter uma amostra de croma (501, 1202) de uma área de referência (502) a partir de uma amostra de luma (503, 1201) associada da área de referência (502), caracterizado pelo fato de que compreende: - determinar dois pares de valores (1003, 1004, 1203, 1204, 1205, 1206, 1207) para determinar os parâmetros do modelo linear (1208), sendo cada um dos dois pares ((a1,β1), (a2,β2)>) definidos por duas variáveis, uma primeira variável das duas variáveis correspondendo a uma amostra de luma (503, 1201), uma segunda variável das duas variáveis correspondendo a uma amostra de croma (501, 1202); - determinar os parâmetros do modelo linear (1208) incluindo um parâmetro correspondente a uma inclinação (α) do modelo linear pelo uso dos dois pares de valores; - decodificar a área de referência (502) usando os parâmetros do modelo linear; em que a determinação do parâmetro correspondendo à inclinação utiliza aritmética de inteiros; em que uma magnitude do parâmetro correspondente à inclinação (a) é restringida de modo que um número de bits para representar a inclinação (a) em aritmética de inteiros não excede 5 bits, e em que quando ao parâmetro correspondente à inclinação é atribuído um valor zero, a um parâmetro correspondente a uma interceptação do modelo linear é atribuído um valor mínimo de amostra de croma dentre os dois pares de valores.
4. Método, de acordo com qualquer a reivindicação 3, caracterizado pelo fato de que a determinação do parâmetro correspondente à inclinação (α) do modelo linear compreende determinar uma divisão, a dita determinação compreendendo reduzir a magnitude da divisão aplicando um deslocamento de bits à dita divisão.
5. Dispositivo para codificar imagens (10) derivando parâmetros de um modelo linear (1208) para obter uma amostra de croma (501, 1202) de uma área de referência (502) a partir de uma amostra de luma (503, 1201) associada da área de referência (502), caracterizado pelo fato de que compreende: uma unidade de derivação para derivar parâmetros do modelo linear; uma primeira unidade de determinação para determinar dois pares de valores (1003, 1004, 1203, 1204, 1205, 1206, 1207) para determinar os parâmetros do modelo linear (1208), cada um dos dois pares ((a1,β1), (a2,β2)) sendo definido por duas variáveis, uma primeira variável das duas variáveis correspondendo a uma amostra de luma (503, 1201), uma segunda variável das duas variáveis correspondendo a uma amostra de croma (501, 1202); uma segunda unidade de determinação para determinar os parâmetros do modelo linear (1208) incluindo um parâmetro correspondente a uma inclinação (α) do modelo linear usando os dois pares de valores; e uma unidade de codificação configurada para codificar a área de referência (502) usando os parâmetros do modelo linear, em que a determinação do parâmetro correspondendo à inclinação utiliza aritmética de inteiros; em que uma magnitude do parâmetro correspondente à inclinação (a) é restringido de modo que um número de bits para representar a inclinação (a) em aritmética de inteiros não exceda 5 bits, e em que quando ao parâmetro correspondente à inclinação é atribuído um valor zero, a um parâmetro correspondente a uma interceptação do modelo linear é atribuído um valor mínimo de amostra de croma dentre os dois pares de valores.
6. Dispositivo para decodificar imagens derivando parâmetros de um modelo linear (1208) para obter uma amostra de croma (501, 1202) de uma área de referência (502) a partir de uma amostra de luma (503, 1201) associada da área de referência (502), caracterizado pelo fato de que compreende: uma unidade de derivação para derivar parâmetros do modelo linear; uma primeira unidade de determinação para determinar dois pares de valores (1003, 1004, 1203, 1204, 1205, 1206, 1207) para determinar os parâmetros do modelo linear (1208), cada um dos dois pares ((a1,β1), (a2,β2y) sendo definido por duas variáveis, uma primeira variável das duas variáveis correspondendo a uma amostra de luma (503, 1201), uma segunda variável das duas variáveis correspondendo a uma amostra de croma (501, 1202); uma segunda unidade de determinação para determinar os parâmetros do modelo linear (1208) incluindo um parâmetro correspondente a uma inclinação (α) do modelo linear usando os dois pares de valores; e uma unidade de decodificação para decodificar a área de referência (502) usando os parâmetros do modelo linear; em que a determinação do parâmetro correspondendo à inclinação utiliza aritmética de inteiros; em que uma magnitude do parâmetro correspondente à inclinação (a) é restringida de modo que um número de bits para representar a inclinação (a) em aritmética de inteiros não exceda 5 bits, e em que quando ao parâmetro correspondente à inclinação é atribuído um valor zero, a um parâmetro correspondente a uma interceptação do modelo linear é atribuído um valor mínimo de amostra de croma dentre os dois pares de valores.
7. Suporte legível por computador não-transitório, caracterizado pelo fato de que armazena uma sequência de instruções para execução de um método para codificar imagens pela derivação de parâmetros de um modelo linear (1208) para obter uma amostra de croma (501, 1202) de uma área de referência (502) a partir de uma amostra de luma (503, 1201) associada da área de referência (502), o método compreendendo: - determinar dois pares de valores (1003, 1004, 1203, 1204, 1205, 1206, 1207) para determinar os parâmetros do modelo linear (1208), sendo cada um dos dois pares ((a1,β1), (a2,β2')) definidos por duas variáveis, uma primeira variável das duas variáveis correspondendo a uma amostra de luma (503, 1201), uma segunda variável das duas variáveis correspondendo a uma amostra de croma (501, 1202); - determinar os parâmetros do modelo linear (1208) incluindo um parâmetro correspondente a uma inclinação (α) do modelo linear pelo uso dos dois pares de valores; e - codificar a área de referência (502) usando os parâmetros do modelo linear, em que a determinação do parâmetro correspondendo à inclinação utiliza aritmética de inteiros; em que uma magnitude do parâmetro correspondente à inclinação (a) é restringida de modo que um número de bits para representar a inclinação (a) em aritmética de inteiros não excede 5 bits, e em que quando ao parâmetro correspondente à inclinação é atribuído um valor zero, a um parâmetro correspondente a uma interceptação do modelo linear é atribuído um valor mínimo de amostra de croma dentre os dois pares de valores.
8. Suporte legível por computador não-transitório, caracterizado pelo fato de que armazena uma sequência de instruções para execução de um método para decodificar imagens pela derivação de parâmetros de um modelo linear (1208) para obter uma amostra de croma (501, 1202) de uma área de referência (502) a partir de uma amostra de luma (503, 1201) associada da área de referência (502), o método compreendendo: - determinar dois pares de valores (1003, 1004, 1203, 1204, 1205, 1206, 1207) para determinar os parâmetros do modelo linear (1208), sendo cada um dos dois pares ((a1,β1), (a2,β2')) definidos por duas variáveis, uma primeira variável das duas variáveis correspondendo a uma amostra de luma (503, 1201), uma segunda variável das duas variáveis correspondendo a uma amostra de croma (501, 1202); - determinar os parâmetros do modelo linear (1208) incluindo um parâmetro correspondente a uma inclinação (α) do modelo linear pelo uso dos dois pares de valores; e - decodificar a área de referência (502) usando os parâmetros do modelo linear; - m que a determinação do parâmetro correspondendo à inclinação utiliza aritmética de inteiros; em que uma magnitude do parâmetro correspondente à inclinação (a) é restringida de modo que um número de bits para representar a inclinação (a) em aritmética de inteiros não excede 5 bits, e em que quando ao parâmetro correspondente à inclinação é atribuído um valor zero, a um parâmetro correspondente a uma interceptação do modelo linear é atribuído um valor mínimo de amostra de croma dentre os dois pares de valores.
BR122022004363-1A 2018-02-23 2019-02-21 Método para codificar imagens pela derivação de parâmetros de um modelo linear, método para decodificar imagens pela derivação de parâmetros de um modelo linear, dispositivo para codificar imagens, dispositivo para decodificar imagens e suporte legível por computador não-transitório BR122022004363B1 (pt)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1802972.8 2018-02-23
GB1820023.8 2018-12-07

Publications (1)

Publication Number Publication Date
BR122022004363B1 true BR122022004363B1 (pt) 2023-08-15

Family

ID=

Similar Documents

Publication Publication Date Title
BR112020017150A2 (pt) Novos conjuntos de amostras e novos esquemas de redução de resolução para predição de amostras de componente linear
WO2019162116A1 (en) New sample sets and new down-sampling schemes for linear component sample prediction
WO2020127956A1 (en) Piecewise modeling for linear component sample prediction
BR122022004363B1 (pt) Método para codificar imagens pela derivação de parâmetros de um modelo linear, método para decodificar imagens pela derivação de parâmetros de um modelo linear, dispositivo para codificar imagens, dispositivo para decodificar imagens e suporte legível por computador não-transitório
BR122022004365B1 (pt) Método para codificar imagens pela derivação de parâmetros de um modelo linear, método para decodificar imagens pela derivação de parâmetros de um modelo linear, dispositivo para codificar imagens, dispositivo para decodificar imagens e suporte legível por computador não-transitório
BR122022004366B1 (pt) Método para codificar imagens pela derivação de parâmetros de um modelo linear, método para decodificar imagens pela derivação de parâmetros de um modelo linear, dispositivo para codificar imagens, dispositivo para decodificar imagens e suporte legível por computador não-transitório
BR112020017153B1 (pt) Método para derivar parâmetros de um modelo linear, dispositivo para codificar e dispositivo para decodificar imagens derivando parâmetros de um modelo linear, e, suporte legível por computador