BR112017023403B1 - METHOD AND APPARATUS FOR ENTROPY CODING OF IMAGE OR VIDEO DATA - Google Patents

METHOD AND APPARATUS FOR ENTROPY CODING OF IMAGE OR VIDEO DATA Download PDF

Info

Publication number
BR112017023403B1
BR112017023403B1 BR112017023403-3A BR112017023403A BR112017023403B1 BR 112017023403 B1 BR112017023403 B1 BR 112017023403B1 BR 112017023403 A BR112017023403 A BR 112017023403A BR 112017023403 B1 BR112017023403 B1 BR 112017023403B1
Authority
BR
Brazil
Prior art keywords
range
probability
value
current
bin
Prior art date
Application number
BR112017023403-3A
Other languages
Portuguese (pt)
Other versions
BR112017023403A2 (en
Inventor
Tzu-Der Chuang
Ching-Yeh Chen
Yu-Wen Huang
Original Assignee
Mediatek Inc.
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 Mediatek Inc. filed Critical Mediatek Inc.
Priority claimed from PCT/CN2016/082645 external-priority patent/WO2016184399A1/en
Publication of BR112017023403A2 publication Critical patent/BR112017023403A2/en
Publication of BR112017023403B1 publication Critical patent/BR112017023403B1/en

Links

Abstract

MÉTODO E APARELHO DE CODIFICAÇÃO DE ENTROPIA DE DADOS DE IMAGEM OU VÍDEO. São descritos um método e aparelhos de codificação de entropia para um codificado ou decodificador de vídeo usando Codificador Aritmético Binário à Base de Contexto (CABAC) com base em múltiplas tabelas. Em uma modalidade, um bin corrente de dados binários de um símbolo de codificação corrente é codificado ou decodificado de acordo com uma probabilidade de um valor binário do bin corrente e a probabilidade do valor binário é atualizada de acordo com o valor binário do bin corrente para um bin seguinte usando modelos de probabilidade de parâmetros múltiplos. Cada modelo de probabilidade de parâmetros múltiplos é atualizado usando-se pelo menos uma tabela de consulta com o conjunto individual de estado de probabilidade como um índice de tabela para acessar o conteúdo desta pelo menos uma tabela de consulta. Em uma outra modalidade, a atualização de faixa é calculada para um faixa baseado no valor médio do intervalo de faixa.METHOD AND APPARATUS FOR ENTROPY CODING OF IMAGE OR VIDEO DATA. An entropy coding method and apparatus for a video encoder or decoder using Context-Based Binary Arithmetic Encoder (CABAC) based on multiple tables are described. In one embodiment, a current bin of binary data of a current encoding symbol is encoded or decoded according to a probability of a binary value of the current bin and the probability of the binary value is updated according to the binary value of the current bin to a following bin using multi-parameter probability models. Each multi-parameter probability model is updated using at least one look-up table with the individual probability state set as a table index to access the contents of this at least one look-up table. In another embodiment, the range update is calculated for a range based on the average value of the range interval.

Description

REFERÊNCIA CRUZADA A PEDIDOS CORRELATOSCROSS REFERENCE TO RELATED ORDERS

[001] A presente invenção reivindica prioridade ao pedido de patente provisória U.S. No. de série 62/163.473, depositado em 19 de maio de 2015, pedido de patente U.S. No. de Série 62/214.129, depositado em 3 de setembro de 2015, e pedido de patente provisória U.S. No de Série 62/322.306, depositado em 14 de abril de 2016. Os pedidos de patentes provisórias U.S. são incorporados pelo presente integralmente ao presente documento a título de referência.[001] The present invention claims priority to U.S. provisional patent application Serial No. 62/163,473, filed on May 19, 2015, U.S. patent application Serial No. 62/214,129, filed on September 3, 2015, and U.S. provisional patent application Serial No. 62/322,306, filed April 14, 2016. The U.S. provisional patent applications are hereby incorporated in their entirety herein by reference.

CAMPO DA INVENÇÃOFIELD OF INVENTION

[002] A presente invenção se refere a técnicas de codificação de entropia para a codificação de imagem e codificação de vídeo. Mais especialmente, a presente invenção se refere a um Codificador Aritmético Binário à Base de Contexto (CABAC) com base em múltiplas tabelas para a codificação de imagem e codificação de vídeo.[002] The present invention relates to entropy coding techniques for image coding and video coding. More especially, the present invention relates to a Context-Based Binary Arithmetic Coder (CABAC) based on multiple tables for image coding and video coding.

FUNDAMENTOS E TÉCNICA ANTERIOR CORRELATAFUNDAMENTALS AND RELATED PREVIOUS TECHNIQUE

[003] A codificação aritmética é conhecida como um dos métodos de compressão de dados eficiente e é amplamente usada na codificação de padrões, incluindo JBIG, JPEG2000, H.264/AVC e Codificação de Vídeo de Alta Eficiência (HEVC). Em H.264/AVC e em Versão de Modelo de Teste HEVC 16.0 (HM- 16.0), é adotada a codificação aritmética binária adaptativa à base de contexto como a ferramenta de codificação de entropia no sistema de codificação de vídeo.[003] Arithmetic coding is known as one of the efficient data compression methods and is widely used in coding standards, including JBIG, JPEG2000, H.264/AVC and High Efficiency Video Coding (HEVC). In H.264/AVC and HEVC Test Model Version 16.0 (HM-16.0), context-based adaptive binary arithmetic coding is adopted as the entropy coding tool in the video coding system.

[004] Conforme mostrado na Figura 1, CABAC consiste em tres partes: unidade de binarização 110, unidade de modelagem de contexto 120, e unidade de codificação aritmética binária 130. Na etapa de binarização, cada elemento sintático é mapeado unicamente para uma corda binária (bin ou bins). Dentro da etapa de modelagem de contexto, é selecionado um modelo de probabilidade para cada bin. O modelo de probabilidade correspondente pode depender dos elementos sintáticos anteriormente codificados, de índices de bin e de informações colaterais. Depois da binarização e da atribuição de modelo de contexto, um valor de bin juntamente com o seu modelo associado é transmitido ao motor de codificação aritmética binária.[004] As shown in Figure 1, CABAC consists of three parts: binarization unit 110, context modeling unit 120, and binary arithmetic coding unit 130. In the binarization step, each syntactic element is uniquely mapped to a binary string (bin or bins). Within the context modeling step, a probability model is selected for each bin. The corresponding probability model may depend on previously encoded syntactic elements, bin indices, and collateral information. After binarization and context template assignment, a bin value along with its associated template is passed to the binary arithmetic coding engine.

[005] A codificação aritmética binária é um procedimento recorrente de subdivisão de intervalos. A corrente de bits de saída é o indicador da probabilidade final do intervalo de codificação. A probabilidade do intervalo de codificação, T, é especificada pela faixa(range) e pelo limite inferior do intervalo de codificação (designado como “low” na discussão que segue). A faixa é o âmbito possível do intervalo de codificação. Dependendo do símbolo corrente ser o símbolo mais provável (MPS) ou o símbolo menos provável (LPS), o intervalo de codificação seguinte é atualizado como um dos dois sub- intervalos adequadamente conforme mostrado na eq. (1) e na eq (2). onde RangeLPS é a faixa estimada quando LPS for codificado.[005] Binary arithmetic coding is a recurring interval subdivision procedure. The output bitstream is the indicator of the final probability of the coding interval. The coding range probability, T, is specified by the range and the lower bound of the coding range (designated as “low” in the discussion that follows). The range is the possible scope of the encoding range. Depending on whether the current symbol is the most likely symbol (MPS) or the least likely symbol (LPS), the next encoding range is updated as one of the two subranges accordingly as shown in eq. (1) and in eq (2). where RangeLPS is the estimated range when LPS is encoded.

[006] A Figura 2 ilustra a idéia da codificação aritmética binária. Inicialmente, a faixa de probabilidade (isto é, faixa0) é 1 e o limite baixo (isto é, baixo0) é 0 conforme indicado pela escala de probabilidade 210. Se o primeiro símbolo for um símbolo MPS, um indicador na parte inferior da escala de probabilidade 210 pode ser usado para sinalizar o evento de um símbolo MPS. A faixa1 é usada como a escala de probabilidade 220 para o processamento do símbolo seguinte. Novamente, a escala de probabilidade 220 é dividida em duas partes para MPS e LPS, respectivamente. Se o segundo símbolo for um símbolo LPS, a RangeLPS1 será selecionada como a escala de probabilidade 230 para o símbolo seguinte. Sempre que um novo símbolo for codificado, a faixa correspondente se torna menor. Quando uma faixa se torna demasiadamente pequena, a faixa pode ser renormalizada para formar uma escala de probabilidade 240 com uma faixa maior.[006] Figure 2 illustrates the idea of binary arithmetic coding. Initially, the probability range (i.e., range0) is 1 and the low limit (i.e., low0) is 0 as indicated by probability scale 210. If the first symbol is an MPS symbol, an indicator at the bottom of the scale probability 210 can be used to signal the event of an MPS symbol. Range1 is used as the probability scale 220 for processing the next symbol. Again, the 220 probability scale is divided into two parts for MPS and LPS, respectively. If the second symbol is an LPS symbol, RangeLPS1 will be selected as the 230 probability scale for the next symbol. Whenever a new symbol is encoded, the corresponding range becomes smaller. When a range becomes too small, the range can be renormalized to form a 240 probability scale with a larger range.

[007] Em codificação aritmética moderna, a atualização da probabilidade é frequentemente efetuada de acordo com um modelo. Um método é descrito, por exemplo, por Marpe et al., em uma publicação técnica (“Context-Based Adaptive Binary Arithmetic Coding in the H 264/AVC Vídeo Compression Standard”, IEEE Transactions on Circuits and Systems for Vídeo Technology, Vol. 13, No. 7, pp 620-636, julho de 2003), onde é usada a seguinte fórmula: Na equação acima, y é igual a 0 se o símbolo corrente for o símbolo mais provável (MPS), caso contrário, y é igual a 1. Esta fórmula proporciona um valor estimado para probabilidade do símbolo menos provável (LPS). O a de ponderação é derivado de acordo com a seguinte equação onde min_prob corresponde à probabilidade mínima do símbolo menos provável de CABAC e state_number corresponde ao número de estados de contexto para estimativa de valor de probabilidade.[007] In modern arithmetic coding, probability updating is often performed according to a template. One method is described, for example, by Marpe et al., in a technical publication (“Context-Based Adaptive Binary Arithmetic Coding in the H 264/AVC Video Compression Standard”, IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 7, pp 620-636, July 2003), where the following formula is used: In the above equation, y equals 0 if the current symbol is the most likely symbol (MPS), otherwise y equals 1. This formula provides an estimated value for the probability of the least likely symbol (LPS). The weighting a is derived according to the following equation where min_prob corresponds to the minimum probability of the least likely CABAC symbol and state_number corresponds to the number of context states for probability value estimation.

[008] Para CABAC de HEVC, há 64 estados de probabilidade. A min_prob é 0,01875, e o state_number é 63. Cada estado tem um valor de probabilidade indicando a probabilidade para selecionar o LPS. Os 64 valores representativos de probabilidade, pc e [0.01875,0.5] , foram derivados para o LPS pela seguinte equação recursiva: [008] For HEVC CABAC, there are 64 probability states. The min_prob is 0.01875, and the state_number is 63. Each state has a probability value indicating the probability for selecting the LPS. The 64 representative probability values, pc and [0.01875,0.5] , were derived for the LPS by the following recursive equation:

[009] O valor de RangeLPS de um estado a é derivado da seguinte equação: [009] The RangeLPS value of a state a is derived from the following equation:

[0010] Para reduzir as computações necessárias para se derivar RangeLPS, o resultado de RangeLPS de cada valor de faixa pode ser pré-calculado e armazenado em uma tabela de consulta (LUT). Em H.264/AVC e HEVC, uma tabela de 4 colunas de RangeLPS pré-calculada é adotado para reduzir o tamanho da tabela conforme mostrado na Tabela 1. A faixa é dividida em quatro segmentos. Em cada segmento, a RangeLPS de cada estado de probabilidade a (pa) é pré-definida. Em outras palavras a RangeLPS de um estado de probabilidade a é quantificado em quatro valores. A RangeLPS selecionada depende do segmento ao qual a faixa pertence. [0010] To reduce the computations required to derive RangeLPS, the RangeLPS result of each range value can be pre-calculated and stored in a look-up table (LUT). In H.264/AVC and HEVC, a 4-column table of pre-calculated RangeLPS is adopted to reduce the table size as shown in Table 1. The range is divided into four segments. In each segment, the RangeLPS of each state of probability a (pa) is pre-defined. In other words, the RangeLPS of a state of probability a is quantified into four values. The selected RangeLPS depends on the segment the range belongs to.

[0011] Em JCTVC-F254 (Alshin et al., “Multi-parameter probability up-date for CABAC”, Joint Collaborative Team on Vídeo Coding (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 6a. Reunião: Turim, IT, 14-22 de julho de 2011, Documento JCTVC-F254), Alshin, et al., divulgam uma atualização de probabilidade de parâmetros múltiplos para o CABAC do padrão HEVC. O parâmetro N = 1/(1-a) é uma medida aproximada para o número de bins anteriormente codificados (isto é, “tamanho de janela”) que tem uma influência significativa sobre o bin corrente. A escolha do parâmetro N determina a sensibilidade do modelo. Um sistema sensível reagirá rapidamente a uma real alteração. Por outro lado, um modelo menos sensível não reagirá a ruído e a erros aleatórios. As duas propriedades são úteis, mas contraditórias. Consequentemente, Alshin et al., descrevem um método para o cálculo de diversos valores com diferentes ai simultaneamente: e usa média ponderada como a predição de probabilidade do bin seguinte: onde ßi é um fator ponderal associado com ai.[0011] In JCTVC-F254 (Alshin et al., “Multi-parameter probability up-date for CABAC”, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/ WG11, 6th Meeting: Turin, IT, July 14-22, 2011, Document JCTVC-F254), Alshin, et al., release a multi-parameter probability update for the HEVC standard CABAC. The parameter N = 1/(1-a) is an approximate measure for the number of previously encoded bins (i.e., “window size”) that have a significant influence on the current bin. The choice of parameter N determines the sensitivity of the model. A sensitive system will react quickly to a real change. On the other hand, a less sensitive model will not react to noise and random errors. Both properties are useful but contradictory. Consequently, Alshin et al., describe a method for calculating several values with different ai simultaneously: and uses weighted average as the probability prediction of the next bin: where ßi is a weight factor associated with ai.

[0012] Em vez das tabelas de consulta de transição de estado (m_aucNextStateMPS e m_aucNextStateLPS) utilizadas em CABAC do padrão AVC para a atualização do estado e da sua probabilidade correspondente, Alshin, et al., usa o cálculo explícito com fórmula livre de multiplicação para a atualização da probabilidade. Pressupondo-se que a probabilidade pié representada pelo número inteiro Pi de 0 a 2k (isto é, pi= Pi/ 2k) e que aié representado por 1 sobre uma potência do número dois (isto é, ai=1/2Mi), a fórmula livre de multiplicação para a atualização da probabilidade pode ser derivada do seguinte modo: [0012] Instead of the state transition lookup tables (m_aucNextStateMPS and m_aucNextStateLPS) used in CABAC of the AVC standard for updating the state and its corresponding probability, Alshin, et al., uses explicit calculation with a multiplication-free formula to update the probability. Assuming that the probability pi is represented by the integer Pi from 0 to 2k (i.e., pi= Pi/ 2k) and that ai is represented by 1 over a power of the number two (i.e., ai=1/2Mi), the Multiplication-free formula for updating the probability can be derived as follows:

[0013] Esta fórmula prediz a probabilidade de que o bin seguinte será “1” em que Y = 2k se o último bin de codificação for “1”, Y=0 se o último bin de codificação for “0”, e “>>Mi” corresponde ao deslocamento para a direita de uma operação de Mi bits.[0013] This formula predicts the probability that the next bin will be “1” where Y = 2k if the last encoding bin is “1”, Y = 0 if the last encoding bin is “0”, and “> >Mi” corresponds to the shift to the right of an Mi bit operation.

[0014] Para manter o equilíbrio entre aumento da complexidade e aumento do desempenho, considera-se que a combinação linear para a estimativa de probabilidade consiste em dois parâmetros somente: [0014] To maintain the balance between increased complexity and increased performance, the linear combination for probability estimation is considered to consist of two parameters only:

[0015] O valor de ponto de flutuação que corresponde à probabilidade para AVC CABAC é sempre inferior ou igual a 1/2. Se a probabilidade exceder este limite, LPS se torna MPS para manter a probabilidade dentro do intervalo mencionado acima. É necessário se comutar MPS/LPS quando a probabilidade de MPS/LPS for superior a 0,5. Alshin, et al., propuseram aumentar o nível permissível de probabilidade (em termos de valores de ponto de flutuação) até 1 para evitar a comutação de MPS/LPS. Portanto é derivada uma tabela de consulta (LUT) para o armazenamento de RangeOne ou de RangeZero.[0015] The floating point value that corresponds to the probability for CABAC stroke is always less than or equal to 1/2. If the probability exceeds this limit, LPS becomes MPS to keep the probability within the range mentioned above. It is necessary to switch MPS/LPS when the MPS/LPS probability is greater than 0.5. Alshin,et al.,proposed to increase the permissible level of probability,(in terms of floating point values) up to 1 to avoid MPS/LPS,switching. Therefore, a look-up table (LUT) is derived for storing RangeOne or RangeZero.

[0016] Em VCEG-AZ07 (Chen, et al., “Further improvements to HMKTA-1.0”, reunião de ITU-T Video Coding Experts Group (VCEG), Varsóvia, Polônia, IT, 19-26 de junho de 2015, Documento: VCEG-AZ07), Chen, et al., propuseram usar um CABAC de um único parâmetro. A derivação da probabilidade é igual à de JCTVC-F254, que usa a eq. (9) para derivar a probabilidade de ser um ou zero. Para cada contexto, somente uma velocidade de atualização é usada, o que significa para cada contexto somente um N é usado. No entanto, diferentes contextos podem usar diferentes Ns. A faixa para N varia de 4 a 7, e uma variável de 2 bits é usada para indicar a velocidade de atualização da probabilidade para um modelo de contexto específico. O valor de N é determinado do lado do codificador e sinalizado na corrente de bits.[0016] In VCEG-AZ07 (Chen, et al., “Further improvements to HMKTA-1.0”, ITU-T Video Coding Experts Group (VCEG) meeting, Warsaw, Poland, IT, June 19-26, 2015, Document: VCEG-AZ07), Chen, et al., proposed to use a single-parameter CABAC. The probability derivation is the same as that of JCTVC-F254, which uses eq. (9) to derive the probability of it being one or zero. For each context, only one update speed is used, which means for each context only one N is used. However, different contexts may use different Ns. The range for N varies from 4 to 7, and a 2-bit variable is used to indicate the probability update speed for a specific context model. The value of N is determined on the encoder side and signaled in the bitstream.

[0017] Em JCTVC-F254 e VCEG-AZ07, a LUT de RangeOne ou de RangeZero é uma tabela de 64 colunas por 512 linhas. O lançamento da LUT consiste na faixa corrente e na probabilidade corrente. A faixa válida da faixa corrente varia de 256 a 510. A faixa corrente é dividida em 64 seções, em que cada seção contém 4 valores da faixa corrente (tal como, por exemplo, 256 a 259, 260 a 263 etc.). O índice de seção da faixa pode ser derivado por: [0017] In JCTVC-F254 and VCEG-AZ07, the RangeOne or RangeZero LUT is a table of 64 columns by 512 rows. The LUT launch consists of the current range and the current probability. The valid range of the current range is 256 to 510. The current range is divided into 64 sections, where each section contains 4 current range values (such as, for example, 256 to 259, 260 to 263, etc.). The track section index can be derived by:

[0018] A faixa válida da probabilidade corrente (P) se estende de 0 a 2k - 1. Em JCTVC-F254 e VCEG-AZ07, o valor de ké 15. A probabilidade corrente é dividida em 512 seções, contendo cada seção 64 valores de probabilidade corrente (tal como, por exemplo, 0 a 63, 64 a 27 etc.). O índice de seção de probabilidade pode ser derivado por: [0018] The valid range of the current probability (P) extends from 0 to 2k - 1. In JCTVC-F254 and VCEG-AZ07, the value of k is 15. The current probability is divided into 512 sections, each section containing 64 values current probability (such as, for example, 0 to 63, 64 to 27, etc.). The probability section index can be derived by:

[0019] O valor de RangeOne pode ser derivado consultando-se a tabela, por exemplo: [0019] The RangeOne value can be derived by consulting the table, for example:

[0020] Cada valor em RangeOne de tabela (tableRangeOne) é derivado por: onde MinRange é o valor de faixa mais baixo do rangeIdx derivado. O clip3(X, Y, Z) é para aparar o valor Z dentro da faixa de X a Y. O Round é para arredondar o valor até um número inteiro.[0020] Each value in table RangeOne (tableRangeOne) is derived by: where MinRange is the lowest range value of the derived rangeIdx. clip3(X, Y, Z) is for trimming the Z value within the range of X to Y. Round is for rounding the value up to an integer.

[0021] A seção de faixa para rangeIdx = 0, por exemplo, é de 256 a 259, o valor de MinRange é 256. O valor de MinRange pode ser derivado por: [0021] The range section for rangeIdx = 0, for example, is 256 to 259, the MinRange value is 256. The MinRange value can be derived by:

[0022] O valor de Mé o valor máximo de (probIdx + 1). Em JCTVC-F254 e VCEG-AZ07, por exemplo, o valor de Mé 512. A Tabela 2 mostra a tabela de consulta divulgada em JCTVC- F254, que consiste em 64 colunas para os valores de faixa e em 512 lançamentos. Para cada lançamento o valor de faixa é representado por 9 bits. Tabela 2 [0022] The value of M is the maximum value of (probIdx + 1). In JCTVC-F254 and VCEG-AZ07, for example, the M value is 512. Table 2 shows the lookup table published in JCTVC-F254, which consists of 64 columns for range values and 512 entries. For each release the range value is represented by 9 bits. Table 2

[0023] Dois filtros em circuito estão incluídos no padrão de codificação de vídeo H.265/HEVC. Eles consistem em filtro de desbloqueio e afastamento adaptativo de amostra (SAO). O filtro de desbloqueio pode reduzir os artefatos que bloqueiam que são causados por erro de quantificação. SAO pode ainda melhorar a qualidade do vídeo por aplicação de valores de afastamento às amostras classificadas. Antes do modelo de teste HEVC Test Model 7 (HM-7), era também incluída uma outra técnica de filtração em circuito denominada filtro de circuito adaptativo (ALF). ALF usa técnicas de filtração Wiener para derivar coeficientes de filtração. Uma multiplicidade de filtros é codificada de acordo com diferentes regiões pictóricas. Os coeficientes de filtração são codificados em conjunto de parâmetros de adaptação (APS), e sinalizadores de controle de ligação/desligamento são codificados usando-se elementos sintáticos de nível de CTU (nível de unidade de árvore de codificação).[0023] Two in-circuit filters are included in the H.265/HEVC video coding standard. They consist of deblocking filter and sample adaptive offset (SAO). The deblocking filter can reduce blocking artifacts that are caused by quantification error. SAO can also improve video quality by applying offset values to the classified samples. Prior to the HEVC Test Model 7 (HM-7) test model, another in-loop filtering technique called adaptive in-loop filter (ALF) was also included. ALF uses Wiener filtration techniques to derive filtration coefficients. A multitude of filters are encoded according to different pictorial regions. Filtering coefficients are encoded in adaptation parameter sets (APS), and on/off control flags are encoded using CTU-level (coding tree unit level) syntactic elements.

[0024] É óbvio que os coeficientes de filtração são o principal excedente em taxa de bits quando se codificam os elementos sintáticos de ALF. Geralmente, as características de textura do bloco de codificação vizinho são muito semelhantes as do bloco de codificação corrente. Portanto, o filtro de bloco de codificação vizinho pode ser diretamente usado para o bloco de codificação corrente para economizar excedente em taxa de bits. Como dois blocos vizinhos aplicam os mesmos coeficientes de filtro neste caso, este método de codificação é também denominado fusão com filtro. Um esquema de fusão com filtro de blocos baseado em prioridade foi também divulgado. A primeira etapa consiste em escolher o número máximo de N candidatos a partir de N blocos vizinhos predefinidos. A segunda etapa consiste em selecionar um filtro dentre N candidatos e codificar o seu índice de filtro para a corrente de bits. A seguir, vem descrito um método para melhorar ainda o desempenho de esquema de fusão com filtro de blocos baseado em prioridades.[0024] It is obvious that filtering coefficients are the main surplus in bitrate when encoding the syntactic elements of ALF. Generally, the texture characteristics of the neighboring coding block are very similar to those of the current coding block. Therefore, the neighboring coding block filter can be directly used for the current coding block to save bitrate surplus. Since two neighboring blocks apply the same filter coefficients in this case, this coding method is also called filter fusion. A priority-based block filter fusion scheme was also disclosed. The first step consists of choosing the maximum number of N candidates from N predefined neighboring blocks. The second step consists of selecting a filter among N candidates and encoding its filter index into the bitstream. Next, a method is described to further improve the performance of the priority-based block filter fusion scheme.

[0025] Quando uma multiplicidade de filtros é sustentada em ALF, além de dividir uma imagem em diferentes regiões, alguns métodos de classificação à base de pixels ou à base de blocos estão também presentes antes de HM-7. Uma técnica ALF foi descrita, por exemplo, para calcular a Medida Laplaciana modificada por Somatório (SLM) de cada pixel. Pixels tendo o mesmo valor SLM serão filtrados por um filtro. Conforme mostrado na Figura 3, cada quadrado indica um pixel, e pixels de SLMnsão filtrados por um filtro, podendo n ser 1, 2 ou 3 neste exemplo. Neste caso o SML é tratado como um tipo de regra de classificação de pixel (PCR). Para um método de classificação à base de blocos, a primeira etapa é análoga a classificação à base de pixels para se calcular a característica de cada pixel em um bloco. A segunda etapa consiste em se calcular a propriedade de um bloco com base nas características de todos os pixels em um bloco.[0025] When a multiplicity of filters is sustained in ALF, in addition to dividing an image into different regions, some pixel-based or block-based classification methods are also present before HM-7. An ALF technique has been described, for example, to calculate the Summation-Modified Laplacian Measure (SLM) of each pixel. Pixels having the same SLM value will be filtered by a filter. As shown in Figure 3, each square indicates a pixel, and SLMn pixels are filtered by a filter, where n can be 1, 2 or 3 in this example. In this case the SML is treated as a type of pixel classification rule (PCR). For a block-based classification method, the first step is analogous to pixel-based classification to calculate the characteristic of each pixel in a block. The second step is to calculate the property of a block based on the characteristics of all pixels in a block.

BREVE SUMÁRIO DA INVENÇÃOBRIEF SUMMARY OF THE INVENTION

[0026] São descritos um método e aparelho de codificação de entropia de dados de imagem e de vídeo para um codificador ou decodificador de imagem ou vídeo usando- se Codificador Aritmético Binário Adaptativo à Base de Contexto (CABAC). Em uma modalidade, um bin corrente de um conjunto de dados binários de um símbolo de codificação corrente é codificado ou decodificado dependendo de uma probabilidade do valor binário do bin corrente e a probabilidade do valor binário é atualizada de acordo com o valor binário do bin corrente para um bin seguinte usando modelos de probabilidade de parâmetros múltiplos. A probabilidade do valor binário do bin corrente é gerada de um ou mais símbolos anteriormente codificados antes do símbolo de codificação corrente. Cada modelo de probabilidade de parâmetros múltiplos é atualizado usando- se um conjunto individual de estados de probabilidade associados com um parâmetro correspondente. Especificamente, cada modelo de probabilidade de parâmetros múltiplos é atualizado usando-se pelo menos uma tabela de consulta com o conjunto individual de estado de probabilidade como um índice de tabela para acessar o conteúdo da pelo menos uma tabela de consulta.[0026] A method and apparatus for entropy coding image and video data to an image or video encoder or decoder using Context-Based Adaptive Binary Arithmetic Encoder (CABAC) are described. In one embodiment, a current bin of a binary data set of a current encoding symbol is encoded or decoded depending on a probability of the binary value of the current bin and the probability of the binary value is updated according to the binary value of the current bin. for a following bin using multi-parameter probability models. The probability of the binary value of the current bin is generated from one or more previously encoded symbols before the current encoding symbol. Each multi-parameter probability model is updated using an individual set of probability states associated with a corresponding parameter. Specifically, each multi-parameter probability model is updated using at least one look-up table with the individual probability state set as a table index to access the contents of the at least one look-up table.

[0027] Em um exemplo, a tabela de consulta compreende uma tabela de faixas de LPS (símbolo menos provável), incluindo a tabela de faixas de LPS inclui a faixa de LPS predeterminada para um estado de probabilidade dado e uma faixa corrente. A tabela de faixa de LPS pode incluir a faixa de LPS predeterminada para o estado de probabilidade dado e uma faixa corrente quantificada para reduzir o tamanho da tabela. A tabela de faixas de LPS pode armazenar valores de faixa par um número reduzido do conjunto individual de estados de probabilidade, e o número reduzido do conjunto individual dos estados de probabilidade é selecionado por conservação uniforme de um estado de probabilidade de cada M estados de probabilidade e M é um número inteiro positivo superior a 1. O valor M corresponde, por exemplo, a 2, 4 ou 8. A tabela de faixas de LPS pode armazenar valores de faixa para um número reduzido do conjunto individual de estados de probabilidade e o número reduzido do conjunto individual de estados de probabilidade é selecionado por conservação não uniforme do conjunto individual de estados de probabilidade.[0027] In one example, the lookup table comprises an LPS range table (least likely symbol), including the LPS range table includes the predetermined LPS range for a given probability state and a current range. The LPS range table may include the predetermined LPS range for the given probability state and a quantified current range to reduce the size of the table. The LPS range table can store range values for a reduced number of the individual set of probability states, and the reduced number of the individual set of probability states is selected by uniform conservation of one probability state from each M probability states. and M is a positive integer greater than 1. The value M corresponds, for example, to 2, 4, or 8. The LPS range table can store range values for a reduced number of the individual set of probability states and the reduced number of the individual set of probability states is selected by non-uniform conservation of the individual set of probability states.

[0028] A tabela de consulta pode compreender uma tabela de estados seguintes de LPS (símbolo menos provável) ou uma tabela de estados seguintes de MPS (símbolo mais provável) em que a tabela de estados seguintes de LPS ou a tabela de estados seguintes de MPS inclui um seguinte estado de probabilidade de LPS para cada estado corrente de probabilidade de LPS ou um seguinte estado de probabilidade de MPS para cada estado corrente de probabilidade de MPS. A tabela de estados seguintes de LPS pode armazenar os estados seguintes de LPS para um número reduzido dos estados de probabilidade de LPS ou a tabela dos estados seguintes de MPS armazena os estados seguintes de MPS para um número reduzido de estados de probabilidade de MPS.[0028] The lookup table may comprise an LPS next state table (least likely symbol) or an MPS next state table (most likely symbol) wherein the LPS next state table or the next MPS state table MPS includes a following LPS probability state for each current LPS probability state or a following MPS probability state for each current MPS probability state. The LPS next states table may store the LPS next states for a reduced number of the LPS probability states or the MPS next states table stores the MPS next states for a reduced number of the MPS probability states.

[0029] Os modelos de probabilidade de parâmetros múltiplos podem corresponder a modelos de probabilidade de dois parâmetros usando um primeiro parâmetro e um segundo parâmetro, e o primeiro parâmetro é derivado com base no segundo parâmetro. O primeiro parâmetro pode ser igual ao segundo parâmetro elevado a uma potência de M e M é um número inteiro superior a 1. Uma probabilidade do valor binário pode ser derivada de novas probabilidades individuais atualizadas de acordo com modelos de probabilidade de parâmetros múltiplos. É também descrita uma derivação da probabilidade final baseada nas probabilidades de dois estados de probabilidade respectivos associados com dois parâmetros de probabilidade.[0029] Multi-parameter probability models can correspond to two-parameter probability models using a first parameter and a second parameter, and the first parameter is derived based on the second parameter. The first parameter can be equal to the second parameter raised to a power of M and M is an integer greater than 1. A probability of the binary value can be derived from new individual probabilities updated according to multi-parameter probability models. A derivation of the final probability based on the probabilities of two respective probability states associated with two probability parameters is also described.

[0030] Um outro método de codificação de entropia de dados de imagem e vídeo em um codificador ou decodificador de imagem ou vídeo é também descrito. O bin corrente de um conjunto de dados binários de um símbolo de codificação corrente está codificado ou decodificado de acordo com uma probabilidade de um valor binário do bin corrente, sendo a probabilidade do valor binário do bin corrente gerado a partir de um ou mais símbolos codificados antes do símbolo de codificação corrente. A probabilidade do valor binário é em seguida atualizada de acordo com o valor binário do bin corrente para um bin seguinte; e a codificação ou decodificação do bin corrente usando valores de faixa Um ou da faixa Zero derivados de pelo menos uma tabela de consulta de faixas. Uma metade menor de faixa (RangeSH), os valores de faixa Um ou valores de faixa Zero são derivados para um intervalo de faixa dado com base no intervalo de faixa dado e em uma probabilidade dada do valor binário.[0030] Another method of entropy coding image and video data in an image or video encoder or decoder is also described. The current bin of a set of binary data of a current encoding symbol is encoded or decoded according to a probability of a binary value of the current bin, being the probability of the binary value of the current bin generated from one or more encoded symbols before the current encoding symbol. The probability of the binary value is then updated according to the binary value of the current bin for a next bin; and encoding or decoding the current bin using range One or range Zero values derived from at least one range lookup table. A Range Lesser Half (RangeSH), Range One values, or Range Zero values are derived for a given range interval based on the given range range and a given probability of the binary value.

[0031] A pelo menos uma tabela de consulta de faixas pode compreender uma tabela de faixa Zero ou uma tabela de faixa Um. O valor de faixa Um pode ser derivado para um valor de faixa média do intervalo de faixa dado, e um valor de probabilidade médio de intervalo de faixa dado de faixa de probabilidade Zero ou faixa de probabilidade Um. O valor de faixa Um pode ser derivado para um valor de faixa médio do intervalo de faixa dado e um valor de probabilidade máxima do intervalo de faixa dado da faixa de probabilidade Zero ou faixa de probabilidade Um. A pelo menos uma tabela de consulta de faixas pode somente incluir valores de faixa para a faixa de probabilidade Zero ou faixa de probabilidade Um entre 0,0 e 0,5. O valor de faixa da faixa de probabilidade Zero ou a faixa de probabilidade Um entre 0,5 e 1,0 pode ser derivado por (faixa corrente - os valores de faixa para a faixa de probabilidade Um ou faixa de probabilidade Zero entre 0,0 e 0,5). A pelo menos uma tabela de consulta de faixas pode incluir valores de faixas para a faixa de probabilidade Zero ou faixa de probabilidade Um entre 0,0 e 1,0, sendo os valores de faixa para a faixa de probabilidade Zero ou a faixa de probabilidade Um entre 0,5 e 1,0 são refletidos dos valores de faixa para a faixa de probabilidade Zero ou a faixa de probabilidade Um entre 0,0 e 0,5.[0031] The at least one range lookup table may comprise a Zero range table or a One range table. The One range value may be derived for an average range value of the given range range, and a range value average probability of given range interval from probability range Zero or probability range One. The range value of One can be derived for an average range value of the given range range and a maximum probability value of the given range interval from the range of probability Zero or probability range One. The at least one range lookup table may only include range values for the probability range Zero or probability range One between 0.0 and 0.5. The range value of the Zero probability range or the One probability range between 0.5 and 1.0 can be derived by (current range - the range values for the One probability range or the Zero probability range between 0.0 and 0.5). The at least one range lookup table may include range values for the Zero probability range or One probability range between 0.0 and 1.0, the range values for the Zero probability range or the One probability range being One between 0.5 and 1.0 are reflected from the range values for the Zero probability range or the One probability range between 0.0 and 0.5.

BREVE DESCRIÇÃO DOS DESENHOSBRIEF DESCRIPTION OF THE DRAWINGS

[0032] A Figura 1 ilustra uma estrutura básica da codificação aritmética binária adaptativa baseada em contexto (CABAC).[0032] Figure 1 illustrates a basic structure of context-based adaptive binary arithmetic coding (CABAC).

[0033] A Figura 2 ilustra uma concepção da codificação aritmética binária, em que inicialmente a faixa de probabilidades é 1 (isto é range0) e o limite baixo (isto é, low0) é 0 conforme indicado por uma escala de probabilidades.[0033] Figure 2 illustrates a conception of binary arithmetic coding, in which initially the range of probabilities is 1 (i.e. range0) and the low limit (i.e. low0) is 0 as indicated by a probability scale.

[0034] A Figura 3 ilustra um exemplo de Medida Laplaciana Modificada por Somatório (SLM) de cada pixel, indicando cada quadrado um pixel e pixels de SLMn são filtrados por um filtro e n pode ser 1, 2 ou 3 neste exemplo.[0034] Figure 3 illustrates an example of Summation-Modified Laplacian Measure (SLM) of each pixel, each square indicating a pixel and SLMn pixels are filtered by a filter and n can be 1, 2 or 3 in this example.

[0035] A Figura 4 ilustra um exemplo de codificação aritmética binária adaptativa baseada em contexto (CABAC) de dois parâmetros baseados em tabela, em que um parâmetro proporciona uma velocidade de atualização mais rápida e o outro parâmetro proporciona uma velocidade de atualização mais lenta.[0035] Figure 4 illustrates an example of table-based two-parameter context-based adaptive binary arithmetic coding (CABAC), where one parameter provides a faster update speed and the other parameter provides a slower update speed.

[0036] A Figura 5 ilustra um fluxograma exemplar para uma codificação aritmética binária adaptativa baseada em contexto (CABAC) baseada em múltiplas tabelas de acordo com uma modalidade da presente invenção.[0036] Figure 5 illustrates an exemplary flowchart for a context-based adaptive binary arithmetic coding (CABAC) based on multiple tables in accordance with an embodiment of the present invention.

[0037] A Figura 6 ilustra um fluxograma exemplar para uma outra codificação aritmética binária adaptativa baseada em contexto (CABAC) baseada em múltiplas tabelas de acordo com uma modalidade da presente invenção.[0037] Figure 6 illustrates an exemplary flowchart for another context-based adaptive binary arithmetic coding (CABAC) based on multiple tables in accordance with an embodiment of the present invention.

DESCRIÇÃO DETALHADA DA INVENÇÃODETAILED DESCRIPTION OF THE INVENTION

[0038] A descrição que segue é o modo mais bem contemplado de se implementar a invenção. A descrição é dada com a finalidade de ilustrar os princípios gerais da invenção e não deve ser considerada como tendo um sentido de limitação. O âmbito da invenção é mais bem determinado por referência às reivindicações apensas.[0038] The description that follows is the best contemplated way of implementing the invention. The description is given for the purpose of illustrating the general principles of the invention and should not be considered to have a limiting meaning. The scope of the invention is best determined by reference to the appended claims.

[0039] Em JCTVC-F254 e VCEG-AZ07, em vez de armazenar o índice do estado de probabilidade, a probabilidade real de cada contexto é armazenada em um buffer de 16 bits ou de 32 bits. Comparando-se ao índice de estado de 7 bits em HEVC, os custos com a implementação aumentam substancialmente. Para se derivar o intervalo de RangeOne ou RangeZero, é usada uma tabela de consulta de 9 bits*64 colunas*512 lançamentos (isto é, 294912 bits). O tamanho da tabela de consulta é bastante grande para um analisador. Consequentemente, na presente invenção, é divulgado uma codificação CABAC à base de tabelas múltiplas. Usando-se a fórmula na eq. (4) ou na eq. (19), deriva-se um ou uma multiplicidade de valores de a. Logo que se deriva um a, outros valores de a pode ser derivado usando-se a eq. (20): [0039] In JCTVC-F254 and VCEG-AZ07, instead of storing the probability state index, the actual probability of each context is stored in a 16-bit or 32-bit buffer. Compared to the 7-bit state index in HEVC, implementation costs increase substantially. To derive the range from RangeOne or RangeZero, a 9-bit*64 columns*512 entries (i.e. 294912 bits) look-up table is used. The size of the lookup table is quite large for a parser. Accordingly, in the present invention, a multiple table-based CABAC encoding is disclosed. Using the formula in eq. (4) or in eq. (19), one or a multiplicity of values of a are derived. Once a is derived, other values of a can be derived using eq. (20):

[0040] O valor de N, por exemplo, pode ser 7 e M pode ser 16. Consequentemente, a2 pode ser 1 - (1/128) e a1 pode ser (a2)16.[0040] The value of N, for example, can be 7 and M can be 16. Consequently, a2 can be 1 - (1/128) and a1 can be (a2)16.

[0041] Usando-se o a derivado e a eq. 3 ou a eq. 21 (a eq. 3 multiplicada), é também derivada a probabilidade de LPS: [0041] Using the derivative and eq. 3 or eq. 21 (eq. 3 multiplied), the probability of LPS is also derived:

[0042] A multiplicidade de valores de a para a derivação dos estados de probabilidade mencionados acima são denominados parâmetros múltiplos ou parâmetros de modelo múltiplo nesta descrição. Conforme mostrado acima, estes estados de probabilidade correspondem a um conjunto de valores predefinidos associados com a probabilidade de LPS ou de MPS. No entanto, podem também ser usados direta ou indiretamente outros parâmetros, tais como N e M no exemplo acima, como parâmetros de modelo de probabilidade. Embora a forma do estado de probabilidade seja descrita usando-se eq. (21) e as formas de parâmetros sejam descritas nas eq. (19) e (20), deve ser observado que outras formas de parâmetros equivalentes são também usadas neste campo (1-a), (1-a1) e (1-a2) foram já usados para substituir a, a1 e a2 nas eqs. (19) a (21). Deve ficar subentendido que estas formas diferentes são equivalentes e podem ser usadas intercambialmente.[0042] The multiplicity of values of a for deriving the probability states mentioned above are called multiple parameters or multiple model parameters in this description. As shown above, these probability states correspond to a set of predefined values associated with the LPS or MPS probability. However, other parameters, such as N and M in the example above, can also be used directly or indirectly as probability model parameters. Although the shape of the probability state is described using eq. (21) and the parameter forms are described in eqs. (19) and (20), it should be noted that other forms of equivalent parameters are also used in this field (1-a), (1-a1) and (1-a2) have already been used to replace a, a1 and a2 in the eq. (19) to (21). It should be understood that these different forms are equivalent and can be used interchangeably.

[0043] Usando o novo a e o novo p, as novas tabelas de range LPS para a1 e a2, podem ser derivadas conforme mostrado na Tabela 3 (para a1) e Tabelas 4a a 4h (para a2) respectivamente. Tabela 3 [0043] Using the new a and the new p, the new LPS range tables for a1 and a2 can be derived as shown in Table 3 (for a1) and Tables 4a to 4h (for a2) respectively. Table 3

[0044] A Figura 4 ilustra um exemplo de codificação aritmética binária adaptativa baseada em contexto (CABAC) de dois parâmetros baseada em tabelas, onde um parâmetro (isto é, N1 correspondendo a a1) proporciona uma velocidade de atualização mais rápida e o outro parâmetro (isto é, N2, correspondendo a a2) proporciona uma velocidade de atualização mais lenta.[0044] Figure 4 illustrates an example of table-based two-parameter Context-Based Adaptive Binary Arithmetic Coding (CABAC), where one parameter (i.e., N1 corresponding to a1) provides a faster update speed and the other parameter (i.e. N2, corresponding to a2) provides a slower update speed.

[0045] Para cada contexto, ela tem uma multiplicidade de estados de probabilidade associados com uma multiplicidade de parâmetros. Ela pode ter dois estados de probabilidade associados, por exemplo, com dois parâmetros para cada contexto: um para a1 e um outro para a2. Os estados (o estado a e estado b, por exemplo) em cada contexto são atualizados independentemente. Para a codificação/decodificação de um bin, um estado pode ser atualizado para o LPS do estado e o outro pode ser atualizado para o estado MPS. Quando se deriva a faixa LPS para codificação (RLPSC), a faixa LPS de cada estado pode ser derivada por consulta à tabela. Se o MPS de dois estados for o mesmo, o RLPSC será a média da faixa LPS do estado a (RLPS_a) e a faixa LPS do estado b (RLPS_b). Caso contrário, são derivadas a faixa média de bin-0 e a faixa média de bin-1. O RLPSC é a faixa média com o menor valor. Se RLPS_a for menor, por exemplo, o RLPSC é igual a RLPS_a médio e a faixa_MPS_b. Se RLPS_b for menor, o RLPSC será igual ao RLPS_b médio e faixa_MPS_a. Faixa_MPS_x é igual a (faixa - RLPS_x) , em que x corresponde a a ou a b. A operação de média entre o valor A e o valor B pode ser implementada usando-se a operação de afastamento para a direita, tal como ((A+B)>> 1) ou ((A+B+1)>>1). O RLPSC, RMPSC (faixa MPS para codificação), e MPS podem ser derivados de acordo com o processo na tabela abaixo: Tabela 5 [0045] For each context, it has a multiplicity of probability states associated with a multiplicity of parameters. It can have two associated probability states, for example, with two parameters for each context: one for a1 and another for a2. The states (state a and state b, for example) in each context are updated independently. For encoding/decoding a bin, one state can be updated to the LPS state and the other can be updated to the MPS state. When deriving the LPS range for coding (RLPSC), the LPS range for each state can be derived by consulting the table. If the MPS of two states is the same, the RLPSC is the average of the LPS range of state a (RLPS_a) and the LPS range of state b (RLPS_b). Otherwise, the average range of bin-0 and the average range of bin-1 are derived. The RLPSC is the average range with the lowest value. If RLPS_a is smaller, for example, RLPSC is equal to average RLPS_a and range_MPS_b. If RLPS_b is smaller, RLPSC will be equal to average RLPS_b and range_MPS_a. Range_MPS_x is equal to (range - RLPS_x), where x corresponds to a or b. The averaging operation between value A and value B can be implemented using the right shift operation, such as ((A+B)>> 1) or ((A+B+1)>>1 ). The RLPSC, RMPSC (MPS range for coding), and MPS can be derived according to the process in the table below: Table 5

[0046] A faixa LPS derivada para codificação e a faixa MPS para codificação derivadas, que equivale a (faixa - RLPSC) podem ser usadas para HEVC CABAC. A CABAC de parâmetros múltiplos baseada em tabelas conforme mostrada acima pode reduzir substancialmente o tamanho da tabela de consulta (LUT).[0046] The derived LPS range for coding and the MPS range for derived coding, which is equivalent to (range - RLPSC) can be used for HEVC CABAC. Table-based multi-parameter CABAC as shown above can substantially reduce the size of the look-up table (LUT).

[0047] Na CABAC baseada em múltiplas tabelas, os valores de MPS ou os valores de LPS associados com os estados de probabilidade para um contexto do podem ser diferentes. Conforme foi mencionado acima, os dois estados de probabilidade para o caso de duas tabelas podem ter valores diferentes de MPS ou LPS. Portanto, em vez de lidar com o modelo de probabilidade associado com MPS e com LPS, é também possível se lidar com valores de bin 0 e 1. Consequentemente, um outro método consiste no uso da tabela de LPS para derivar a RangeOne ou a RangeZero para cada estado de probabilidade, sendo RangeOne o valor de faixa para o valor de bin 1 e sendo RangeZero o valor de faixa para o valor de bin 0. A média de RangeOne ou de RangeZero pode ser derivada calculando-se a média de RangeOne e de RangeZero, respectivamente. A RangeOne para a codificação (ROFC) e a RangeZero par codificação (RZFC) podem ser derivadas por um processo conforme mostrado nas Tabelas 6 a 9. Tabela 6 [0047] In CABAC based on multiple tables, the MPS values or the LPS values associated with the probability states for a context may be different. As mentioned above, the two probability states for the two-table case can have different MPS or LPS values. Therefore, instead of dealing with the probability model associated with MPS and LPS, it is also possible to deal with bin values 0 and 1. Therefore, another method is to use the LPS table to derive RangeOne or RangeZero for each probability state, with RangeOne being the range value for bin value 1 and RangeZero being the range value for bin value 0. The mean of RangeOne or RangeZero can be derived by calculating the mean of RangeOne and of RangeZero, respectively. The RangeOne for coding (ROFC) and the RangeZero for coding (RZFC) can be derived by a process as shown in Tables 6 through 9. Table 6

[0048] A ROFC e a RZFC podem ser usadas para CABAC. A CABAC de parâmetros múltiplos baseada em tabelas conforme descrito acima pode reduzir substancialmente o tamanho de LUT.[0048] ROFC and RZFC can be used for CABAC. Table-based multi-parameter CABAC as described above can substantially reduce LUT size.

[0049] Para reduzir ainda mais o tamanho de LUT, a LUT pode ser reduzida a sua taxa de amostragem. A LUT para a1, por exemplo, pode ter a sua taxa de amostrada reduzida. A LUT com a taxa de amostragem reduzida pode ser uma amostra de transição de LPS e/ou uma tabela de faixas LPS. Dois tipos de métodos de redução de taxa de amostras são mostrados abaixo.[0049] To further reduce the LUT size, the LUT can be reduced by its sampling rate. The LUT for a1, for example, may have its sample rate reduced. The LUT with the reduced sample rate can be an LPS transition sample and/or an LPS track table. Two types of sample rate reduction methods are shown below.

[0050] Quantificação uniforme: - Compressão de M:1 por armazenamento dos estados 0, M, 2M, 3M, ..., onde M = 2, 4, 8. - Para a transição de LPS, next_LPS_state(K) = next_LPS_state (K/M) + K%M ou next_LPS_state(K) = next_LPS_state (K/M) + K%M exceto para K = 0, ou K = 0, 1.[0050] Uniform quantification: - Compression of M:1 by storing the states 0, M, 2M, 3M, ..., where M = 2, 4, 8. - For the LPS transition, next_LPS_state(K) = next_LPS_state (K/M) + K%M or next_LPS_state(K) = next_LPS_state (K/M) + K%M except for K = 0, or K = 0, 1.

[0051] Quantificação não uniforme: - Nenhuma compressão para estados em [0,N/4-1], - Compressão de 2:1 para os estados em [N/4, N/2- 1], - compressão de 4:1 para os estados em [N/2, N-1], e - N pode ser 512[0051] Non-uniform quantification: - No compression for states in [0,N/4-1], - 2:1 compression for states in [N/4, N/2- 1], - compression of 4: 1 for the states in [N/2, N-1], and - N can be 512

[0052] A Tabela 10 ilustra, por exemplo, um exemplo da LUT de faixa LPS para a1, sendo a relação de compressão M = 8. Para um estado K, sua RangeLPS é LUT(K/M). [0052] Table 10 illustrates, for example, an example of the LPS range LUT for a1, with the compression ratio M = 8. For a state K, its RangeLPS is LUT(K/M).

[0053] Como a1 e a2 são relacionados entre si por a1 = (a2)16, a tabela de a2 pode ser reutilizada para a1. O estado S1 em a1 é igual ao estado S1*16 em a2. O estado 1 em a1, por exemplo, é igual ao estado 16 em a2, e o estado 2 em a1 é igual ao estado 32 em a2.[0053] As a1 and a2 are related to each other by a1 = (a2)16, the table from a2 can be reused for a1. State S1 in a1 is the same as state S1*16 in a2. State 1 in a1, for example, is the same as state 16 in a2, and state 2 in a1 is the same as state 32 in a2.

[0054] A Tabela 11 ilustra um exemplo do seguinte estado de LPS para a1, em que “-1” na tabela significa a alteração para MPS e o estado é ajustado para 0 e “-2” significa alteração para MPS e Tabela 11 [0054] Table 11 illustrates an example of the following LPS state for a1, where “-1” in the table means the change to MPS and the state is set to 0 and “-2” means the change to MPS and Table 11

[0055] A Tabela 12 ilustra um exemplo do seguinte estado LPS para a2 com a relação de compressão M igual a 8. Para um estado K, o seu seguinte estado LPS é igual a (next_LPS_state(K/M) + K%M). Para o estado 0, o seu seguinte estado LPS pode ser -1 ou -2, em que “-1” significa alteração para MPS e o estado é ajustado para 0, e “-2” significa a alteração para MPS e o estado é ajustado para 1. Tabela 12 [0055] Table 12 illustrates an example of the following LPS state for a2 with the compression ratio M equal to 8. For a state K, its next LPS state is equal to (next_LPS_state(K/M) + K%M) . For state 0, your next LPS state can be -1 or -2, where “-1” means change to MPS and the state is set to 0, and “-2” means change to MPS and the state is adjusted to 1. Table 12

[0056] Para a inicialização de estado, a derivação do estado inicial usada por HEVC pode ser reutilizada. No entanto, uma tabela de consulta para mapear o estado inicial (probabilidade) em HEVC ao estado inicial mais próximo (probabilidade) é usada de acordo com a CABAC de parâmetros múltiplos baseada em tabelas da presente invenção. A Tabela 13 ilustra um exemplo da tabela de mapeamento de estado inicial para a1 e a2. Tabela 13 [0056] For state initialization, the initial state derivation used by HEVC can be reused. However, a look-up table for mapping the initial state (probability) in HEVC to the nearest initial state (probability) is used in accordance with the table-based multi-parameter CABAC of the present invention. Table 13 illustrates an example of the initial state mapping table for a1 and a2. Table 13

[0057] Na presente invenção, também propomos o uso de mais de um parâmetro (mais de um a, por exemplo) para codificação CABAC. Para cada a, ele tem os seus estados tabela de RangeLPS (ou tabela de RangeOne, ou tabela de RangeZero), tabela de MPS seguinte, e tabela de LPS seguinte. Para cada contexto ele pode escolher usar um único a ou dois a. Se forem usados dois a, podem ser usados os métodos mencionados acima. Algumas sintaxes podem usar um único a, e algumas sintaxes podem usar dois a. Estas informações secundárias (tal como informações para indicar sintaxe usando um a ou dois a e para identificar qual é o a, por exemplo) podem ser predefinidas ou sinalizadas na corrente de bits. O coeficiente relacionado com as sintaxes, por exemplo, pode usar um único a, e outras sintaxes podem usar dois a. Em um outro exemplo, as sintaxes relacionadas com coeficiente podem usar dois a, e outras sintaxes podem usar um único a. Estes valores de a podem ser derivados usando-se as eqs. 4, 19 e 20, por exemplo, a5 pode ser 1-(1/128); a1 pode ser (a5)16; a2 pode ser (a5)8; a3 pode ser (a5)4; a4 pode ser (a5)2. As tabelas de RangeLPS para outros a é também predefinida. Cada contexto armazena informações referentes ao qual a que é usado e ao estado corrente.[0057] In the present invention, we also propose the use of more than one parameter (more than one a, for example) for CABAC coding. For each a, it has its states RangeLPS table (or RangeOne table, or RangeZero table), next MPS table, and next LPS table. For each context he can choose to use a single a or two a. If two a are used, the methods mentioned above can be used. Some syntaxes may use a single a, and some syntaxes may use two a's. This secondary information (such as information to indicate syntax using one a or two a and to identify which a is, for example) may be predefined or signaled in the bitstream. The coefficient related syntaxes, for example, may use a single a, and other syntaxes may use two a. In another example, coefficient-related syntaxes may use two a, and other syntaxes may use a single a. These values of a can be derived using eqs. 4, 19 and 20, for example, a5 can be 1-(1/128); a1 can be (a5)16; a2 can be (a5)8; a3 can be (a5)4; a4 can be (a5)2. The RangeLPS tables for others are also predefined. Each context stores information regarding what it is used for and the current state.

[0058] Em CABAC, o valor de faixa válido varia de 256 a 510. Para a derivação de RangeLPS, o número de colunas necessário depende da resolução da faixa. Na Tabela 3 e na Tabelas 4a-4h, por exemplo, a faixa é dividida em quatro partes: 256 a 319, 320 a 383, 384 a 447, e 448 a 510. O valor médio (mid_value) de cada parte de faixa pode ser derivado adequadamente, tal como 288, 352, 416, e 480 respectivamente. Para o primeiro estado (primeiro lançamento) em cada coluna, a probabilidade é (0,5 * mid_value). O segundo estado em cada coluna é o primeiro estado multiplicado por a. Os estados seguintes em cada coluna consistem no estado anterior multiplicado por a. Para a derivação de RangeLPS, o mid_value pode ser alterado para um valor igual ou superior ao valor de faixa mínimo (256, 320, 384, e 448, por exemplo) e igual ou inferior ao valor de faixa máximo (319, 383, 447, e 510, por exemplo).[0058] In CABAC, the valid range value ranges from 256 to 510. For RangeLPS derivation, the number of columns required depends on the range resolution. In Table 3 and Tables 4a-4h, for example, the range is divided into four parts: 256 to 319, 320 to 383, 384 to 447, and 448 to 510. The mid_value of each range part can be derived appropriately, such as 288, 352, 416, and 480 respectively. For the first state (first release) in each column, the probability is (0.5 * mid_value). The second state in each column is the first state multiplied by a. The following states in each column consist of the previous state multiplied by a. For RangeLPS derivation, the mid_value can be changed to a value equal to or greater than the minimum range value (256, 320, 384, and 448, for example) and equal to or less than the maximum range value (319, 383, 447 , and 510, for example).

[0059] Em JCTVC-F254 e VCEG-AZ07, a tabela de RangeOne abrange a probabilidade de 0,0 a 1,0. No entanto, isso torna a LUT demasiado grande para ser implementada em termos de custo de hardware. A LUT é 144 vezes maior do que a LUT de HEVC. Além disso, como cada valor de lançamento da RangeOne ou RangeZero deriva da MinRange (eq. 18), a eficiência de codificação cairá dramaticamente se for usada a LUT com a taxa de amostragem reduzida.[0059] In JCTVC-F254 and VCEG-AZ07, the RangeOne table covers probability from 0.0 to 1.0. However, this makes the LUT too large to implement in terms of hardware cost. The LUT is 144 times larger than the LUT of HEVC. Furthermore, since each RangeOne or RangeZero launch value is derived from the MinRange (eq. 18), encoding efficiency will drop dramatically if the LUT with the reduced sample rate is used.

[0060] Portanto um método é divulgado na presente invenção para armazenar a faixa de probabilidade de 0,0 a 0,5 somente, que é denominada a metade menor da faixa (RangeSH). Os valores na outra metade da faixa podem ser derivados usando-se (Range - RangeSH). O número de linhas define a resolução das probabilidades. Uma tabela de RangeSH, por exemplo, com 64 linhas pode ser projetada para uma faixa de probabilidade de 0,5 a 0,0. Cada carreira representa a RangeLPS para a faixa de probabilidade de 1/64. O valor de RangeSH é derivado por ((Range A) * (Prob B)). A Tabela 14 ilustra uma tabela de RangeSH exemplar com 4 colunas e 64 linhas. A primeira carreira representa a RangeSH para probabilidade de 63/128 a 64/128 em quatro diferentes seções de faixa. Na Tabela 14, a Range A corresponde à Range Mid e Prob B corresponde a Prob Max. O valor de RangeSH é derivado por ((Range Mid) * (Prob Max)). Tabela 14 [0060] Therefore a method is disclosed in the present invention for storing the probability range from 0.0 to 0.5 only, which is called the lower half of the range (RangeSH). Values in the other half of the range can be derived using (Range - RangeSH). The number of lines defines the resolution of the probabilities. A RangeSH table, for example, with 64 rows can be designed for a probability range of 0.5 to 0.0. Each row represents the RangeLPS for the 1/64 probability range. The RangeSH value is derived by ((Range A) * (Prob B)). Table 14 illustrates an exemplary RangeSH table with 4 columns and 64 rows. The first row represents the RangeSH for probability from 63/128 to 64/128 in four different range sections. In Table 14, Range A corresponds to Range Mid and Prob B corresponds to Prob Max. The RangeSH value is derived by ((Range Mid) * (Prob Max)). Table 14

[0061] A Tabela 15 ilustra um outro método exemplar de derivação para RangeSH, que é derivado de ((Range Mid) * ((Prob Max+ Prob Min)/2)). Tabela 15 [0061] Table 15 illustrates another exemplary derivation method for RangeSH, which is derived from ((Range Mid) * ((Prob Max+ Prob Min)/2)). Table 15

[0062] A Tabela 16 ilustra um outro método de derivação de valor exemplar, em que RangeSH é derivada por ((Range Mid) * ((Prob Max + Prob Min)/2)) e o valor mínimo é aparado para 3. Em JCTVC-F254 e VCEG-AZ07, se a probabilidade de um for superior a 0,5 (0,64, por exemplo), significa que a probabilidade de zero é 0,36. O valor 0,36 (na 18a. carreira) será usado para encontrar a faixa para RangeZero. A RangeOne pode ser derivada por (faixa - RangeZero). Tabela 16 [0062] Table 16 illustrates another exemplary value derivation method, in which RangeSH is derived by ((Range Mid) * ((Prob Max + Prob Min)/2)) and the minimum value is trimmed to 3. In JCTVC-F254 and VCEG-AZ07, if the probability of one is greater than 0.5 (0.64, for example), it means that the probability of zero is 0.36. The value 0.36 (on the 18th row) will be used to find the range for RangeZero. RangeOne can be derived by (range - RangeZero). Table 16

[0063] Em uma modalidade para a derivação de RangeOne (ou de RangeZero), o valor probLPS pode ser derivado usando-se a expressão: probLPS = (P >= 2k-1)? 2k-1-P:P para uma probabilidade de k-bit (2k>P> 0). A expressão “x ? y : z” representa uma operação lógica, e que se x for VERDADEIRO ou não igual a 0, avalia para o valor de y; caso contrário, avalia para o valor de z. O valor probIdx pode ser derivado como (probLPS >> (k-n-1)), em que a tabela de RangeSH tem 2n linhas. O valor de rangeIdx é derivado como (range>>(8-m)) - (256>>m), ((range-256)>>(8-m)), ou ((range>>(8-m ))&(2 m -1)), em que a tabela RangeSH tem 2m colunas. A RangeSH é determinada a partir da tabela de RangeSH [probIdx] [rangeIdx]. Se P for igual ou superior a 2k-1 (ou o bit de ordem k de P for 1), a RangeOne é igual a (range - RangeSH) e a RangeZero é igual à RangeSH. Caso contrário (isto é, P inferior a 2k-1), a RangeOne é igual à RangeSH e a RangeZero é igual a (range - RangeSH).[0063] In an embodiment for deriving RangeOne (or RangeZero), the probLPS value can be derived using the expression: probLPS = (P >= 2k-1)? 2k-1-P:P for a k-bit probability (2k>P> 0). The expression “x ? y : z” represents a logical operation, and if x is TRUE or not equal to 0, it evaluates to the value of y; otherwise, it evaluates to the value of z. The probIdx value can be derived as (probLPS >> (k-n-1)), where the RangeSH table has 2n rows. The value of rangeIdx is derived as (range>>(8-m)) - (256>>m), ((range-256)>>(8-m)), or ((range>>(8-m ))&(2 m -1)), where the RangeSH table has 2m columns. RangeSH is determined from the RangeSH [probIdx] [rangeIdx] table. If P is equal to or greater than 2k-1 (or the kth bit of P is 1), RangeOne is equal to (range - RangeSH) and RangeZero is equal to RangeSH. Otherwise (i.e. P less than 2k-1), RangeOne is equal to RangeSH and RangeZero is equal to (range - RangeSH).

[0064] No exemplo de JCTVC-F254 e VCEG-AZ07, k é 15, o valor probLPS é determinado a partir da expressão: probLPS = ((P>= 16384) ? 32767-P: P), probIdx é igual a(probLPS>>8), rangeIdx é igual a (Range>>6) & 3. If P é igual ou superior a 16384, a RangeOne é igual a (range - RangeSH) e RangeZero é igual a RangeSH. Caso contrário (isto é, se P for inferior a 16384), a RangeOne é igual a RangeSH e RangeZero é igual a (range - RangeSH).[0064] In the example of JCTVC-F254 and VCEG-AZ07, k is 15, the probLPS value is determined from the expression: probLPS = ((P>= 16384) ? 32767-P: P), probIdx is equal to ( probLPS>>8), rangeIdx is equal to (Range>>6) & 3. If P is equal to or greater than 16384, RangeOne is equal to (range - RangeSH) and RangeZero is equal to RangeSH. Otherwise (that is, if P is less than 16384), RangeOne is equal to RangeSH and RangeZero is equal to (range - RangeSH).

[0065] Observe-se que, como (2k - 1) consistem todos em uma representação binária, então (2k - 1 - P) existe somente para efetuar o inverso da lógica binária (bitwise) para os k bits de LSB (o bit menos significativo). Na implementação de hardware, a lógica binária exclusiva ou (XOR) para o bit de ordem k de P e os bits de ordem 0 a (k) de P para derivar o valor probLPS.[0065] Note that, as (2k - 1) all consist of a binary representation, then (2k - 1 - P) exists only to perform the inverse of binary logic (bitwise) for the k bits of LSB (the bit less significant). In hardware implementation, exclusive binary logic or (XOR) for the k-order bit of P and the 0-order (k) bits of P to derive the probLPS value.

[0066] Em uma outra modalidade, a tabela de RangeSH é duplicada para reduzir a complexidade de computação. A Tabela 17 ilustra um exemplo da tabela refletida de Tabela 16. Os lançamentos são refletidos no limite entre o valor de probIdx 63 e 64. Usando-se este tipo de tabela de RangeSH , o valor de probIdx pode ser derivado por probIdx = (P>> (k-n)) diretamente, em que a tabela de RangeSH tem 2n linhas. No exemplo de JCTVC-F254 e VCEG-AZ07, k is 15, o valor de probIdx é igual a (P>>8), rangeIdx é igual a ((Range>>6)&3). Se P for igual ou superior a 16384 (ou se o bit de ordem 15 de P for igual a 1), a RangeOne é igual a (range - RangeSH) e RangeZero é igual a RangeSH. Caso contrário (isto é se P for inferior a 16384), a RangeOne é igual à RangeSH e a RangeZero é igual a (range - RangeSH). Tabela 17 [0066] In another embodiment, the RangeSH table is duplicated to reduce computing complexity. Table 17 illustrates an example of the table reflected from Table 16. Throws are reflected at the boundary between the probIdx value 63 and 64. Using this type of RangeSH table, the probIdx value can be derived by probIdx = (P >> (kn)) directly, where the RangeSH table has 2n rows. In the example of JCTVC-F254 and VCEG-AZ07, k is 15, the value of probIdx is equal to (P>>8), rangeIdx is equal to ((Range>>6)&3). If P is equal to or greater than 16384 (or if the 15th order bit of P is equal to 1), RangeOne is equal to (range - RangeSH) and RangeZero is equal to RangeSH. Otherwise (that is, if P is less than 16384), RangeOne is equal to RangeSH and RangeZero is equal to (range - RangeSH). Table 17

[0067] Em um outro exemplo, a tabela de RangeSH refletida de 8 colunas é usada conforme mostrado na Tabela 18. Para JCTVC-F254 e VCEG-AZ07, os ajustes de parâmetros correspondem a k =15, n = 7, e m = 3. Os parâmetros de probabilidade relacionados são derivados como probIdx = (P >>8), rangeIdx = ((range>>5) &7). Se P for igual ou superior a 16384 (isto é, se o bit de ordem 15 de P for 1), os parâmetros de probabilidade relacionados são derivados como RangeOne = (range - RangeSH) e RangeZero = RangeSH. Caso contrário (isto é, se P for inferior a 16384), os parâmetros de probabilidade relacionados são derivados em forma de RangeOne = RangeSH e RangeZero = (range - RangeSH). Tabela 18 [0067] In another example, the 8-column reflected RangeSH table is used as shown in Table 18. For JCTVC-F254 and VCEG-AZ07, the parameter settings correspond to k = 15, n = 7, and m = 3. The related probability parameters are derived as probIdx = (P >>8), rangeIdx = ((range>>5) &7). If P is equal to or greater than 16384 (that is, if the 15th order bit of P is 1), the related probability parameters are derived as RangeOne = (range - RangeSH) and RangeZero = RangeSH. Otherwise (that is, if P is less than 16384), the related probability parameters are derived in the form of RangeOne = RangeSH and RangeZero = (range - RangeSH). Table 18

[0068] Em um outro exemplo, a tabela de RangeSH refletida de 8 colunas por 64 linhas é usada conforme mostrado na Tabela 19. Para JCTVC-F254 e VCEG-AZ07, os ajustes de parâmetros correspondem a k =15, n = 6, e m = 3. Os parâmetros de probabilidade relacionados são derivados como probIdx = (P >>9), rangeIdx = ((range>>5) &7). Se P for igual ou superior a 16384 (isto é, se o bit de ordem 15 de P for 1), os parâmetros de probabilidade relacionados são derivados como RangeOne = (range - RangeSH) e RangeZero = RangeSH. Caso contrário (isto é, se P for inferior a 16384), RangeOne = RangeSH e RangeZero = (range - RangeSH). O tamanho de tabela da Tabela 19 é igual ao da tabela de RangeSH de HEVC ou de H.264/AVC. Tabela 19 [0068] In another example, the 8 column by 64 row reflected RangeSH table is used as shown in Table 19. For JCTVC-F254 and VCEG-AZ07, the parameter settings correspond to k = 15, n = 6, in = 3. Related probability parameters are derived as probIdx = (P >>9), rangeIdx = ((range>>5) &7). If P is equal to or greater than 16384 (that is, if the 15th order bit of P is 1), the related probability parameters are derived as RangeOne = (range - RangeSH) and RangeZero = RangeSH. Otherwise (that is, if P is less than 16384), RangeOne = RangeSH and RangeZero = (range - RangeSH). The table size of Table 19 is the same as the HEVC or H.264/AVC RangeSH table. Table 19

[0069] Nas Tabelas 17 a 19, o valor de lançamento de RangeSH não será necessariamente aparado para ser superior a 3.[0069] In Tables 17 to 19, the RangeSH launch value will not necessarily be trimmed to be greater than 3.

[0070] A Tabela 20 ilustra a comparação do tamanho de tabela de consulta de faixas de uma modalidade da presente invenção e a JCTVC-F254 com o padrão HEVC. A abordagem baseada em JCTVC-F254 exige 12126% do tamanho de registro de HEVC ao passo que a modalidade da presente invenção exige 870% do tamanho de registro de HEVC. Em outras palavras, o método descrito em CTVC-F254 necessita de uma tabela de consulta praticamente 14 vezes maior do que o da modalidade da presente invenção. Tabela 20 [0070] Table 20 illustrates the comparison of the range lookup table size of an embodiment of the present invention and the JCTVC-F254 with the HEVC standard. The JCTVC-F254 based approach requires 12126% of the HEVC record size whereas the embodiment of the present invention requires 870% of the HEVC record size. In other words, the method described in CTVC-F254 requires a look-up table practically 14 times larger than that of the embodiment of the present invention. Table 20

[0071] Em uma outra modalidade, se a probabilidade de um for superior a 0,5 (0,64, por exemplo), a probabilidade superior a 0,5 será usada para a consulta à tabela. Se a faixa for 500, por exemplo, a quarta coluna é usada. O valor de probabilidade de 0,14 corresponde ao valor na 47a carreira, que é 68. RangeOne pode ser ((Range Mid/2) + 68) = 308 ou pode ser ((range/2 + 58) = 318. Se RangeOne for superior à Range, RangeOne pode ser aparada até (range - K), em que K é um número inteiro e K pode ser diferente para valores de faixa diferentes ou para diferentes seções.[0071] In another embodiment, if the probability of one is greater than 0.5 (0.64, for example), the probability greater than 0.5 will be used to query the table. If the range is 500, for example, the fourth column is used. The probability value of 0.14 corresponds to the value in the 47th row, which is 68. RangeOne can be ((Range Mid/2) + 68) = 308 or it can be ((range/2 + 58) = 318. If RangeOne is greater than Range, RangeOne can be trimmed to (range - K), where K is an integer and K can be different for different range values or for different sections.

[0072] No esquema de fusão de blocos com filtro baseado em prioridade, a primeira etapa consiste em escolher o número máximo N de candidatos de M blocos vizinhos predefinidos. No entanto, o número de candidatos a filtro disponíveis dentre os M blocos vizinhos predefinidos podem ser menor do que N devido a indisponibilidade nos limites da imagem, filtros repetitivos, ou filtragem fora. Quando ocorre este caso, pode ocorrer alguma perda de desempenho de codificação. Para superar este problema, são descritas as seguintes modalidades, em que um ou mais filtros são acrescentados à lista de candidatos do esquema de fusão de blocos com filtro baseado em prioridade. Na primeira modalidade, os filtros adicionais são gerados usando-se filtros disponíveis. Alguns coeficientes, por exemplo, longe da posição central podem ser removidos para formar um novo filtro. Em um outro exemplo, um novo filtro simétrico pode ser gerado tirando-se a média dos coeficientes de um filtro disponível. Em um outro exemplo ainda, um ou mais filtros predefinidos ou um filtro que é a média de filtros disponíveis, pode ser acrescentado para preencher a lista de candidatos do esquema de fusão de blocos com filtro baseado em prioridade.[0072] In the priority-based filter block fusion scheme, the first step consists of choosing the maximum number N of candidates from M predefined neighboring blocks. However, the number of available filter candidates among the M predefined neighboring blocks may be less than N due to unavailability at image boundaries, repetitive filters, or out-filtering. When this case occurs, some loss of encoding performance may occur. To overcome this problem, the following embodiments are described, in which one or more filters are added to the candidate list of the priority-based filter block fusion scheme. In the first embodiment, additional filters are generated using available filters. Some coefficients, for example, far from the center position can be removed to form a new filter. In another example, a new symmetric filter can be generated by averaging the coefficients of an available filter. In yet another example, one or more predefined filters, or a filter that is the average of available filters, may be added to populate the candidate list of the priority-based filter block fusion scheme.

[0073] Nas modalidades descritas acima, a similaridade dentre pixel a ser filtrado e os pixels vizinhos pode ser usada para a classificação de pixels. Os pixels vizinhos são definidos usando-se uma janela tal como um padrão em cruz, um quadrado de 3x3 ou um losango 5x5. A posição central de uma janela é a dos pixels a serem filtrados. Para cada pixel vizinho nesta janela, se a diferença de valor de pixel entre o pixel vizinho e o pixel a ser filtrado for inferior a um limiar, a similaridade é aumentada de um. Caso contrário, a similaridade não é aumentada. Depois de comparado todos os pixels vizinhos ao pixel a ser filtrado, podemos obter um valor de similaridade para um pixel a ser filtrado. Com base nos valores de similaridade, os pixels podem ser classificados em grupos diferentes, e diferentes filtros são aplicados para grupos diferentes no processo ALF (filtro de circuito adaptativo). Durante o desenvolvimento do padrão HEVC, a classificação de pixel original foi aplicada a todos os pixels em uma imagem de acordo com HM-7, ou antes de HM- 7.0. No entanto, foram também descritos outros esquemas adaptativos tais como o esquema ALF baseado em CTB (baseado em blocos de árvore de codificação) durante o desenvolvimento do padrão HEVC, em que os parâmetros de ALF são codificados e podem ser alterados de CTB para CTB. É também possível se aplicar uma classificação de pixels a alguns CTBs em uma imagem.[0073] In the embodiments described above, the similarity between the pixel to be filtered and neighboring pixels can be used for pixel classification. Neighboring pixels are defined using a window such as a cross pattern, a 3x3 square, or a 5x5 diamond. The central position of a window is that of the pixels to be filtered. For each neighboring pixel in this window, if the pixel value difference between the neighboring pixel and the pixel to be filtered is less than a threshold, the similarity is increased by one. Otherwise, the similarity is not increased. After comparing all neighboring pixels to the pixel to be filtered, we can obtain a similarity value for a pixel to be filtered. Based on the similarity values, pixels can be classified into different groups, and different filters are applied to different groups in the ALF (adaptive circuit filter) process. During the development of the HEVC standard, the original pixel classification was applied to all pixels in an image in accordance with HM-7, or before HM-7.0. However, other adaptive schemes such as the CTB-based ALF scheme (based on coding tree blocks) were also described during the development of the HEVC standard, in which ALF parameters are encoded and can be changed from CTB to CTB. It is also possible to apply a pixel classification to some CTBs in an image.

[0074] A Figura 5 ilustra um fluxograma exemplar para uma outra codificação aritmética binária adaptativa baseada em contexto (CABAC) baseada em tabelas múltiplas de acordo com uma modalidade da presente invenção. O método codifica ou decodifica um bin corrente de um conjunto de dados binários de um símbolo de codificação corrente de acordo com uma probabilidade de um valor binário do bin corrente conforme mostrado na etapa 510, onde a probabilidade do valor binário do bin corrente é gerada de um ou mais símbolos anteriormente codificados antes do símbolo de codificação corrente. A probabilidade do valor binário é atualizada de acordo com o valor binário do bin corrente para o bin seguinte usando modelos de probabilidade de parâmetros múltiplos na etapa 520, onde cada um dos modelos de probabilidade de parâmetros múltiplos é atualizado usando-se um conjunto individual de estados de probabilidade associados com um parâmetro correspondente.[0074] Figure 5 illustrates an exemplary flowchart for another context-based adaptive binary arithmetic coding (CABAC) based on multiple tables in accordance with an embodiment of the present invention. The method encodes or decodes a current bin of a set of binary data from a current encoding symbol according to a probability of a binary value of the current bin as shown in step 510, wherein the probability of the binary value of the current bin is generated from one or more previously encoded symbols before the current encoding symbol. The probability of the binary value is updated according to the binary value of the current bin for the next bin using multi-parameter probability models in step 520, where each of the multi-parameter probability models is updated using an individual set of probability states associated with a corresponding parameter.

[0075] A Figura 6 ilustra um fluxograma exemplar para uma outra codificação aritmética binária adaptativa baseada em contexto (CABAC) baseada em múltiplas tabelas, de acordo com uma modalidade da presente invenção. O método codifica ou decodifica um bin corrente de um conjunto de dados binários de um símbolo de codificação corrente de acordo com uma probabilidade de um valor binário do bin corrente conforme mostrado na etapa 610, onde a probabilidade do valor binário do bin corrente é gerada de um ou mais símbolos codificados anteriormente antes do símbolo de codificação corrente. A probabilidade do valor binário é atualizada de acordo com o valor binário do bin corrente para um bin seguinte na etapa 620, onde os valores de RangeOne ou de RangeZero derivados de pelo menos uma tabela de consulta de faixas é usada para a codificação ou a decodificação do bin corrente, e em que uma metade menor de faixa (RangeSH), os valores da RangeOne ou da RangeZero são derivados para um intervalo de faixa dado com base em um valor de faixa médio do intervalo de faixa dado e em uma probabilidade dada do valor binário.[0075] Figure 6 illustrates an exemplary flowchart for another context-based adaptive binary arithmetic coding (CABAC) based on multiple tables, in accordance with an embodiment of the present invention. The method encodes or decodes a current bin of a set of binary data from a current encoding symbol according to a probability of a binary value of the current bin as shown in step 610, wherein the probability of the binary value of the current bin is generated from one or more previously encoded symbols before the current encoding symbol. The probability of the binary value is updated according to the binary value of the current bin for a next bin in step 620, where RangeOne or RangeZero values derived from at least one range lookup table are used for encoding or decoding. of the current bin, and in which a smaller range half (RangeSH), RangeOne or RangeZero values are derived for a given range interval based on an average range value of the given range interval and a given probability of the binary value.

[0076] Os fluxogramas mostrados se destinam a ilustrar um exemplo de codificação de vídeo de acordo com a presente invenção. Os versados na técnica poderão modificar cada etapa, rearranjar as etapas, dividir uma etapa ou combinar etapas para implementar a presente invenção sem que haja desvio do espírito da presente invenção. Na descrição foram usadas uma sintaxe e uma semântica específicas para ilustrar exemplos para implementar modalidades da presente invenção. Os versados na técnica poderão colocar em prática a presente invenção substituindo a sintaxe e a semântica com uma sintaxe e uma semântica equivalentes sem se desviar do espírito da presente invenção.[0076] The flowcharts shown are intended to illustrate an example of video coding in accordance with the present invention. Those skilled in the art may modify each step, rearrange steps, divide a step or combine steps to implement the present invention without deviating from the spirit of the present invention. In the description specific syntax and semantics were used to illustrate examples for implementing embodiments of the present invention. Those skilled in the art will be able to practice the present invention by replacing the syntax and semantics with equivalent syntax and semantics without deviating from the spirit of the present invention.

[0077] A descrição acima é apresentada para permitir que os versados na técnica coloquem em prática a presente invenção conforme é proposto no contexto de uma aplicação específica e nas suas exigências. Diversas modificações às modalidades descritas serão evidentes aos versados na técnica, e os princípios gerais definidos no presente documento podem ser aplicados a outras modalidades. Portanto, a presente invenção não se destina a ser limitada ás modalidades específicas mostradas e descritas, mas recebem o mais amplo âmbito consistente com os princípios e características inéditas divulgadas no presente documento. Na descrição detalhada acima, diversos detalhes específicos são ilustrados para prover uma compreensão exaustiva da presente invenção. No entanto, deve ficar subentendido aos versados na técnica que a presente invenção pode ser implementada.[0077] The above description is presented to enable those skilled in the art to put into practice the present invention as proposed in the context of a specific application and its requirements. Various modifications to the described embodiments will be apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments. Therefore, the present invention is not intended to be limited to the specific embodiments shown and described, but is given the broadest scope consistent with the principles and novel features disclosed herein. In the above detailed description, several specific details are illustrated to provide a comprehensive understanding of the present invention. However, it should be understood by those skilled in the art that the present invention can be implemented.

[0078] A modalidade da presente invenção conforme vem descrita acima pode ser implementada em diversos hardware, códigos de software ou por uma combinação dos dois. Uma modalidade da presente invenção, por exemplo, pode consistir em um ou mais circuitos integrados em um chip de compressão de vídeo ou código de programa integrado a um software de compressão de vídeo para efetuar o processamento descrito no presente documento. Uma modalidade da presente invenção pode também consistir em um código de programa a ser executado em um Processador de Sinal Digital (DSP) para conduzir o processamento descrito no presente documento. A invenção pode também envolver uma série de funções a serem conduzidas por um processador computador, um processador de sinal digital, um microprocessador ou por um arranjo de portas programável em campo (FPGA). Estes processadores podem ser configurados para efetuar tarefas específicas de acordo com a invenção, executando um código de software ou código de firmware legível por máquina que define os métodos específicos incorporados pela invenção. O código de software ou o código de firmware pode ser desenvolvido em diferentes linguagens de programação e em diferentes formatos ou estilos. O código de software pode ser também compilado para diferentes plataformas alvo. No entanto, diferentes formatos de códigos, estilos e linguagens de códigos de software e outros meios de configuração de códigos para efetuar as tarefas de acordo com a invenção não se desviarão do espírito e âmbito da invenção.[0078] The embodiment of the present invention as described above can be implemented in various hardware, software codes or by a combination of the two. An embodiment of the present invention, for example, may consist of one or more circuits integrated into a video compression chip or program code integrated into video compression software to perform the processing described herein. An embodiment of the present invention may also consist of program code to be executed on a Digital Signal Processor (DSP) to conduct the processing described herein. The invention may also involve a series of functions to be driven by a computer processor, a digital signal processor, a microprocessor or a field programmable gate array (FPGA). These processors can be configured to perform specific tasks in accordance with the invention by executing software code or machine-readable firmware code that defines the specific methods embodied by the invention. Software code or firmware code can be developed in different programming languages and in different formats or styles. The software code can also be compiled for different target platforms. However, different code formats, software code styles and languages, and other means of configuring codes to perform tasks according to the invention will not deviate from the spirit and scope of the invention.

[0079] A presente invenção pode ser incorporada em outras formas específicas sem que haja desvio do seu espírito ou de suas características essenciais. Os exemplos descritos devem ser considerados em todos os respeitos como ilustrativos e não restritivos O âmbito da presente invenção é, portanto, indicado pelas reivindicações apensas e não pela descrição acima. Todas as alterações que incidirem dentro do significado e alcance de equivalência das reivindicações devem ser incluídas em seu escopo.[0079] The present invention can be incorporated in other specific forms without deviating from its spirit or its essential characteristics. The examples described should be considered in all respects as illustrative and not restrictive. The scope of the present invention is therefore indicated by the appended claims and not by the above description. All changes that affect the meaning and scope of equivalence of the claims must be included in their scope.

Claims (8)

1. Método de codificação de entropia de dados de imagem ou vídeo em um codificador ou decodificador de imagem ou vídeo, o método CARACTERIZADO pelo fato de que compreende: a codificação ou a decodificação de um bin corrente de um conjunto de dados binários de um símbolo de codificação corrente de acordo com uma probabilidade de um valor binário do bin corrente, em que a probabilidade do valor binário do bin corrente é gerada a partir de um ou mais símbolos anteriormente codificados antes do símbolo de codificação corrente; e a atualização da probabilidade do valor binário de acordo com o valor binário do bin corrente para um bin seguinte, em que os valores da faixa Um ou da faixa Zero derivados de pelo menos uma tabela de consulta de faixas são usados para a codificação ou a decodificação do bin corrente; e em que uma metade menor da faixa (RangeSH), os valores da faixa Um ou da faixa Zero são derivados para um intervalo de faixa dado com base no intervalo de faixa dado e em uma probabilidade dada do valor binário.1. Method of entropy coding image or video data in an image or video encoder or decoder, the method CHARACTERIZED by the fact that it comprises: encoding or decoding a current bin of a binary data set of a symbol current encoding according to a probability of a binary value of the current bin, wherein the probability of the binary value of the current bin is generated from one or more symbols previously encoded before the current encoding symbol; and updating the probability of the binary value according to the binary value of the current bin for a next bin, wherein the range One or range Zero values derived from at least one range lookup table are used for encoding or encoding. decoding the current bin; and wherein a lower half of the range (RangeSH), range One or range Zero values are derived for a given range range based on the given range range and a given probability of the binary value. 2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que pelo menos uma tabela de consulta de faixas compreende uma tabela de faixa zero ou uma tabela de faixa Um.2. Method, according to claim 1, CHARACTERIZED by the fact that at least one range lookup table comprises a zero range table or a one range table. 3. Método, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que um valor de faixa é derivado para um valor de faixa médio do intervalo de faixa dado e um valor de probabilidade médio do intervalo de faixa dado de uma faixa de probabilidade Zero ou faixa de probabilidade Um.3. Method according to claim 2, CHARACTERIZED by the fact that a range value is derived for an average range value of the given range interval and an average probability value of the given range interval from a Zero probability range or probability range One. 4. Método, de acordo com a reivindicação 3, CARACTERIZADO pelo fato de que um valor de faixa é derivado para um valor de faixa médio do intervalo de faixa dado e um valor de probabilidade máximo do intervalo de faixa dado de uma faixa de probabilidade Zero ou faixa de probabilidade Um.4. Method according to claim 3, CHARACTERIZED by the fact that a range value is derived for an average range value of the given range range and a maximum probability value of the given range range from a Zero probability range or probability range One. 5. Método, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que pelo menos uma tabela de consulta de faixas somente inclui valores de faixa para uma faixa de probabilidade Zero ou uma faixa de probabilidade Um entre 0,0 e 0,5.5. Method according to claim 2, CHARACTERIZED by the fact that at least one range lookup table only includes range values for a Zero probability range or a One probability range between 0.0 and 0.5. 6. Método, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que o valor de faixa da faixa de probabilidade Zero ou faixa de probabilidade Um entre 0,5 e 1,0 são derivados por: faixa corrente - valores de faixa para faixa de probabilidade Um ou faixa de probabilidade Zero entre 0,0 e 0,5.6. Method, according to claim 5, CHARACTERIZED by the fact that the range value of the probability range Zero or probability range One between 0.5 and 1.0 are derived by: current range - range values for range probability One or probability Zero range between 0.0 and 0.5. 7. Método, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que pelo menos uma tabela de consulta de faixas inclui valores de faixa para faixa de probabilidade Zero ou faixa de probabilidade Um entre 0,0 e 1,0, e em que os valores de faixa para a faixa de probabilidade Zero ou a faixa de probabilidade Um entre 0,5 e 1,0 são refletidos dos valores de faixa para a faixa de probabilidade Zero ou a faixa de probabilidade Um entre 0,0 e 0,5.7. Method according to claim 2, CHARACTERIZED by the fact that at least one range lookup table includes range values for probability range Zero or probability range One between 0.0 and 1.0, and wherein the range values for the Zero probability range or the One probability range between 0.5 and 1.0 are reflected from the range values for the Zero probability range or the One probability range between 0.0 and 0.5 . 8. Aparelho de codificação de entropia para um codificador ou decodificador de imagem ou vídeo, o aparelho de codificação de entropia CARACTERIZADO pelo fato de que compreende: um codificador aritmético binário para a codificação ou a decodificação de um bin corrente de dados binários de um símbolo de codificação corrente de acordo com uma probabilidade de um valor binário para o bin corrente, em que a probabilidade do valor binário do bin corrente é gerada a partir de um ou mais símbolos codificados anteriormente antes do símbolo de codificação corrente; e uma unidade de modelo de contexto para a atualização da probabilidade do valor binário de acordo com o valor binário do bin corrente para um bin seguinte, em que os valores da faixa Um ou da faixa Zero derivados de pelo menos uma tabela de consulta de faixas são usados para a codificação ou decodificação do bin corrente; e em que os valores da faixa Um ou da faixa Zero são derivados para um intervalo de faixa dado com base em um valor de faixa médio do intervalo de faixa dado.8. Entropy coding apparatus for an image or video encoder or decoder, the entropy coding apparatus CHARACTERIZED by the fact that it comprises: a binary arithmetic encoder for encoding or decoding a bin binary data stream of a symbol current encoding according to a probability of a binary value for the current bin, wherein the probability of the binary value of the current bin is generated from one or more symbols previously encoded before the current encoding symbol; and a context model unit for updating the probability of the binary value according to the binary value of the current bin for a following bin, wherein the range One or range Zero values derived from at least one range lookup table are used to encode or decode the current bin; and wherein the range One or range Zero values are derived for a given range interval based on an average range value of the given range interval.
BR112017023403-3A 2015-05-19 2016-05-19 METHOD AND APPARATUS FOR ENTROPY CODING OF IMAGE OR VIDEO DATA BR112017023403B1 (en)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201562163473P 2015-05-19 2015-05-19
US62/163,473 2015-05-19
US201562214129P 2015-09-03 2015-09-03
US62/214,129 2015-09-03
US201662322306P 2016-04-14 2016-04-14
US62/322,306 2016-04-14
PCT/CN2016/082645 WO2016184399A1 (en) 2015-05-19 2016-05-19 Method and apparatus for multi-table based context adaptive binary arithmetic coding

Publications (2)

Publication Number Publication Date
BR112017023403A2 BR112017023403A2 (en) 2018-08-07
BR112017023403B1 true BR112017023403B1 (en) 2023-09-05

Family

ID=

Similar Documents

Publication Publication Date Title
US10742984B2 (en) Method and apparatus for multi-table based context adaptive binary arithmetic coding
JP6702406B2 (en) Logical Intra Mode Naming in HEVC Video Coding
US10103746B2 (en) Methods and devices for coding and decoding the position of the last significant coefficient
CN106851277B (en) Method, apparatus and system for encoding and decoding a subset of transform units of video data
US7898445B2 (en) Entropy coding apparatus
TW201826786A (en) Low-complexity sign prediction for video coding
TWI748201B (en) Entropy coding of transform coefficients suitable for dependent scalar quantization
CN108810539B (en) Method for decoding a plurality of coding units from a bitstream of video data
KR102020101B1 (en) Method and apparatus for syntax element encoding in a video codec
JP2018529273A5 (en)
BRPI0917456B1 (en) METHOD FOR SERVICE TO VIDEO FLOW OF ADAPTATIVE BINARY ARITHMETIC CODING WITH CONTEXT BASED (CABAC)
CN110915213B (en) Method and device for entropy coding and decoding of coding and decoding symbol
JP5264706B2 (en) Arithmetic decoding method and device
EP2697974A2 (en) Methods and devices for coding and decoding the position of the last significant coefficient
US11265561B2 (en) Method and apparatus for range derivation in context adaptive binary arithmetic coding
BR112017023403B1 (en) METHOD AND APPARATUS FOR ENTROPY CODING OF IMAGE OR VIDEO DATA
WO2019075638A1 (en) Coding and decoding method and apparatus, coder, decoder, and storage medium
JP4034317B2 (en) Image encoding device
JP6981540B2 (en) Mode information coding and decoding methods, equipment and electronics
US9312881B2 (en) Binary arithmetic coding scheme
US20210392330A1 (en) Entropy encoding/decoding method and apparatus
BR112017009946B1 (en) EXHAUST PIXEL TO CODE CONVERSION METHODS IN INDICATOR MAP TO CODE CONVERSION
BR112016014088B1 (en) METHOD AND APPARATUS FOR ENCODING A VIDEO DATA BLOCK
BR112016013919B1 (en) DATA DECODING AND ENCRYPTING APPARATUS, METHODS OF OPERATING A DATA DECODING AND ENCRYPTING APPARATUS, NON-TRANSITORY COMPUTER READABLE STORAGE MEDIA, AND, VIDEO DATA CAPTURE, TRANSMISSION, DISPLAY AND/OR STORAGE APPARATUS