BR112013021617A2 - filtragem multimétrica - Google Patents
filtragem multimétrica Download PDFInfo
- Publication number
- BR112013021617A2 BR112013021617A2 BR112013021617-4A BR112013021617A BR112013021617A2 BR 112013021617 A2 BR112013021617 A2 BR 112013021617A2 BR 112013021617 A BR112013021617 A BR 112013021617A BR 112013021617 A2 BR112013021617 A2 BR 112013021617A2
- Authority
- BR
- Brazil
- Prior art keywords
- pixel
- filter
- metric
- video
- block
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
- H04N19/14—Coding unit complexity, e.g. amount of activity or edge presence estimation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/182—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Error Detection And Correction (AREA)
- Developing Agents For Electrophotography (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Picture Signal Circuits (AREA)
- Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
Abstract
FILTRAGEM MULTIMÉTRICA
Uma unidade de filtro de um codificador de vídeo
ou decodificador de vídeo pode determinar uma primeira
métrica para um grupo de pixels dentro de um bloco de
pixels com base em uma comparação de um subconjunto de
pixels no bloco com outros pixels no bloco; determinar um
filtro com base na primeira métrica e gerar uma imagem
filtrada pela aplicação do filtro ao grupo de pixels. O
subconjunto de pixels pode ser selecionado de modo a não
incluir pixels no limite do bloco de pixels.
Description
“FILTRAGEM MULTIMÉTRICA” Esse pedido reivindica prioridade de: Pedido Provisório U.S.
No. 61/445.967, depositado em 23 de fevereiro de 2011; Pedido Provisório U.S.
No. 61/448.771, depositado em 3 de março de 2011; Pedido Provisório U.S.
No. 61/473.713, depositado em 8 de abril de 2011; Pedido Provisório U.S.
No. 61/476.260, depositado em 16 de abril de 2011; Pedido Provisório U.S.
No. 61/478.287, depositado em 22 de abril de 2011; Pedido Provisório U.S.
No. 61/503.426, depositado em 30 de junho de 2011; Pedido Provisório U.S.
No. 61/503.440, depositado em 30 de junho de 2011; Pedido Provisório U.S.
No. 61/527.463, depositado em 25 de agosto de 2011; ' Pedido Provisório U.S.
No. 61/531.571, depositado em6 de setembro de 2011; a totalidade do conteúdo de cada um dos quais é incorporada aqui por referência em sua totalidade.
Campo da Invenção Essa descrição refere-se à codificação de vídeo digital com base em bloco utilizada para comprimir dados de vídeo e, mais particularmente, a técnicas para a filtragem de blocos de vídeo.
Descrição da Técnica Anterior As capacidades de vídeo digital podem ser incorporadas em uma faixa ampla de dispositivos, incluindo televisões digitais, sistemas de difusão direta digital, dispositivos de comunicação sem fio tal como aparelhos de rádio telefonia, sistemas de difusão sem fio, assistentes digitais pessoais (PDAs), computadores laptop, computadores desktop, computadores tablet, câmeras digitais, dispositivos de gravação digital, dispositivos de jogos de vídeo, consoles de jogos de vídeo, e similares.
Os dispositivos de vídeo digital implementam técnicas de compressão de vídeo, tal como MPEG-2, MPEG-4, ou ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), para transmitir e receber vídeo digital de forma mais eficiente.
As técnicas de compressão de vídeo realizam a predição espacial e temporal para redução ou remoção de redundância inerente em sequências de vídeo.
Novos padrões de vídeo, tal como o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) sendo desenvolvido pelo "Equipe de Colaboração Conjunta - Codificação de Vídeo" (JCTVC), que é uma colaboração entre MPEG e ITU-T, continua a emergir e evoluir.
Esse novo padrão HEVC também é algumas vezes referido como H.265. As técnicas de compressão de vídeo com base em bloco podem realizar a predição espacial e/ou predição temporal.
A intracodificação se baseia na predição espacial para redução ou remoção de redundância espacial entre os blocos de vídeo dentro de uma determinada unidade de vídeo codificada, que pode compreender um quadro de vídeo, uma fatia de um quadro de vídeo, ou similar.
Em contraste, a intercodificação se baseia em predição temporal para redução ou remoção da redundância temporal entre blocos de vídeo de unidades de codificação sucessivas de uma sequência de vídeo.
Para intracodificação, o codificador de vídeo realiza a predição espacial para comprimir dados com base em outros dados dentro da mesma unidade de vídeo codificado.
Para a intercodificação, o codificador de vídeo realiza a estimativa de movimento e compensação de movimento vara rastrear o movimento de blocos de vídeo correspondentes de duas ou mais unidades adjacentes de vídeo codificado.
Um bloco de vídeo codificado pode ser representado pela informação de predição que pode ser utilizada para criar ou identificar um bloco de predição, e um bloco residual de dados indicativo das diferenças entre o bloco sendo codificado e o bloco de predição. No caso de intercodificação, um ou mais vetores de movimento são utilizados para identificar o bloco de predição de dados a partir de uma unidade de codificação anterior ou posterior, enquanto que no caso da intracodificação, o modo de predição pode ser utilizado para gerar o boco de predição com base em dados dentro da CU associada com o bloco de vídeo sendo codificado. Ambas a intracodificação e a intercodificação podem definir vários modos de predição : diferentes, que podem definir tamanhos de bloco diferentes Í e/ou técnicas de predição utilizadas na codificação. Tipos “ adicionais de elementos de sintaxe também podem ser | incluídos como parte dos dados de vídeo codificados a fim de controlar ou definir as técnicas de codificação ou parâmetros utilizados no processo de codificação.
Depois da codificação de predição com base em bloco, o codificador de vídeo pode aplicar processos de codificação por entropia e quantização e transformada para reduzir ainda mais a taxa de bit associada com a comunicação de um bloco residual. As técnicas de transformada podem compreender transformadas discretas de cosseno (DCTs) ou processos conceitualmente similares, tal como transformadas de ondas curtas (wavelet), transformadas de inteiro, ou outros tipos de transformada. Em um processo de transformada discreta de cosseno, como um exemplo, O processo de transformada converte um conjunto de valores de Alf aranAms Ada nivaAit Am AAA fiAijiAntam Ada (tranca farmaeds AA podem representar a energia dos valores de pixel no domínio de frequência.
A quantização é aplicada aos coeficientes de transformada e geralmente envolve um processo que limita o número de bits associados com qualquer coeficiente de transformada determinada.
A codificação por entropia compreende um ou mais processos que comprimem coletivamente uma sequência de coeficientes de transformada quantizados.
A filtragem dos blocos de vídeo pode ser aplicada como parte dos loops de codificação e decodificação, ou como parte de um processo de pós-filtragem em blocos de vídeo reconstruídos.
A filtragem é comumente utilizada, por exemplo, para reduzir o bloqueio ou outros artefatos comuns da codificação de vídeo com base em bloco.
Os coeficientes de filtro (algumas vezes chamados de saídas de filtro) podem ser definidos ou selecionados a fim de promover . níveis desejados de filtragem de bloco de vídeo que podem reduzir o bloqueio e/ou aperfeiçoar a qualidade de vídeo de 4 outras formas.
Um conjunto de coeficientes de filtro, por exemplo, pode definir como a filtragem é aplicada ao longo das bordas dos blocos de vídeo ou outros locais dentro dos blocos de vídeo.
Os coeficientes de filtro diferentes podem causar níveis diferentes de filtragen com relação a diferentes pixels dos blocos de vídeo.
A filtragem, por exemplo, pode suavizar ou acentuar as diferenças na intensidade dos valores de pixel adjacentes a fim de ajudar a eliminar os artefatos indesejados.
Sumário da Invenção Essa descrição descreve técnicas associadas com a filtragem de dados de vídeo em um processo de codificação de vídeo e/ou decodificação de vídeo.
De acordo com essa descrição, a filtragem é aplicada a um codificador, e a informação de filtro é codificada no fluxo de bits para foi aplicada ao codificador.
O decodificador recebe dados de vídeo codificados que incluem a informação de filtro, decodifica os dados de vídeo, e aplica filtragem com base na informação de filtragem.
Dessa forma, o decodificador aplica à mesma filtragem que foi aplicada ao codificador.
De acordo com as técnicas dessa descrição, quadro-a-quadro, fatia-a-fatia, LCU-a-LCU, um codificador pode selecionar um ou mais conjuntos de filtros e de unidade codificada-a- nidade codificada, o codificador pode determinar se ou não aplica a filtragem.
Para as unidades codificadas (CUs) que devem ser filtradas, o codificador pode realizar a filtragem com base em pixel-a-pixel ou grupo-a-grupo, onde um grupo pode, por exemplo, ser um bloco de pixels 2x2, ou um bloco de pixels 4x4. Em um exemplo, um método de codificação de vídeo BR inclui a determinação de uma primeira métrica para um bloco de pixels, onde a primeira métrica é determinada com base « em uma comparação de um subconjunto de pixels no bloco para outros pixels no bloco com base na primeira métrica, determinando um filtro para o bloco de pixels, e gerando uma imagem filtrada pela aplicação do filtro ao bloco de pixels.
Em outro exemplo, um dispositivo de codificação de vídeo inclui uma unidade de filtro configurada para determinar uma primeira métrica para um bloco de pixels, onde a primeira métrica é determinada com base em uma comparação de um subconjunto de pixels no bloco com outros pixels no bloco, determinando um filtro para o bloco de pixels com base na primeira métrica, e gerando uma imagem filtrada pela aplicação do filtro ao bloco de pixels, e uma memória configurada para armazenar um resultado filtrado da unidade de filtro.
Em outro exemplo, o aparelho de codificação de vídeo inclui mecanismos para determinar uma primeira métrica para um bloco de pixels, em que a primeira métrica é determinada com base em uma comparação de um subconjunto de pixels no bloco para outros pixels no bloco; mecanismos para determinar um filtro para o bloco de pixels com base na primeira métrica; e mecanismos para gerar uma imagem filtrada pela aplicação do filtro ao bloco de pixels.
Em outro exemplo, o meio de armazenamento legível por computador armazena instruções que quando executadas fazem com que um ou mais processadores determinem uma primeira métrica para um bloco de pixels, em que a primeira métrica é determinada com base em uma comparação de um subconjunto de pixels no bloco para outros pixels no bloco; determinando um filtro para o bloco de pixels com base na . primeira métrica; e gerando uma imagem filtrada pela aplicação do filtro ao bloco de pixels.
* Os detalhes de um ou mais exemplos são apresentados nas figuras a seguir e na descrição abaixo.
Outras características, objetivos e vantagens serão aparentes a partir da descrição e das figuras e a partir das reivindicações.
Breve Descrição dos Desenhos A figura 1 é um diagrama em bloco ilustrando um sistena de codificação e decodificação de vídeo ilustrativo.
A figura 2A e a figura 2B são diagramas conceituais ilustrando um exemplo de um particionamento em árvore quaternária (quadtree) aplicado a uma unidade de codificação maior (LCU).
As figuras 2C e 2D são diagramas conceituais ilustrando um exemplo de um mapa de filtro para uma série de blocos de vídeo correspondendo ao exemplo de particionamento em árvore quaternária das figuras 2A e 2B.
A figura 3 é um diagrama em bloco ilustrando um codificador de vídeo de exemplo consistente com essa descrição.
A figura 4A é um diagrama conceitual ilustrando um mapeamento de faixas para duas métricas para os filtros.
A figura 4B é um diagrama conceitual ilustrando um mapeamento de faixas para uma métrica de atividade e uma métrica de direção para os filtros.
A figura 5 é um diagrama em bloco ilustrando um decodificador de vídeo de exemplo consistente com essa descrição.
As figuras 6A, 6B e 6C ilustram diagramas conceituais de um bloco de pixels 4x4. . A figura 7 é um fluxograma ilustrando as técnicas de codificação consistentes com essa descrição. e As figuras 8A e 8B são fluxogramas ilustrando as técnicas de codificação consistentes com essa descrição. As figuras 9A e 9B são fluxogramas ilustrando técnicas de codificação consistentes com essa descrição.
A figura 10 é um fluxograma ilustrando técnicas de codificação consistentes com essa descrição.
A figura 11 é um fluxograma ilustrando técnicas de codificação consistentes com essa descrição.
Descrição Detalhada da Invenção Essa descrição descreve as técnicas associadas com a filtragen de dados de vídeo em um processo de codificação de vídeo e/ou decodificação de vídeo. De acordo com essa descrição, a filtragem é aplicada a um codificador, e a informação de filtro é codificada no fluxo de bits para permitir que um decodificador identifique a recebe dados de vídeo codificados que incluem a informação de filtragem, decodifica os dados de vídeo, e aplica a filtragem com base na informação de filtragem.
Dessa forma, o decodificador aplica a mesma filtragem com base na informação de filtragem.
Dessa forma, o decodificador aplica à mesma filtragem que foi aplicada no codificador.
De acordo com as técnicas dessa descrição, quadro-a-quadro, fatia-a-fatia ou LCU-a-LCU, um codificador pode selecionar um ou mais conjuntos de filtros, e unidade codificada-a- unidade codificada, um codificador pode determinar se ou não aplica a filtragem.
Para unidades codificadas (CUs) que devem ser filtradas, o codificador pode realizar a filtragem pixel-a-pixel ou grupo-a-grupo, onde um grupo pode, por exemplo, ser um bloco de pixels 2x2 ou um bloco de pixels 4x4. . De acordo com as técnicas dessa descrição, os dados de vídeo podem ser codificados em unidades referidas LU como unidades codificadas (CUs). As CUs podem ser particionadas em CUs menores, ou subunidades, utilizando um esquema de particionamento em árvore quaternária.
A sintaxe identificando o esquema de particionamento em árvore quaternária para uma CU em particular pode ser transmitida de um codificador para um decodificador.
Múltiplas entradas associadas com cada subunidade de uma dada CU podem ser filtradas durante o processo — de decodificação e reconstrução dos dados de vídeo codificados.
De acordo com as técnicas dessa descrição, a sintaxe de descrição de filtro pode descrever um conjunto de filtros, tal como quantos filtros estão no conjunto ou que formato os filtros assumem.
A sintaxe adicional no fluxo de bits recebido pelo decodificador pode identificar os filtros (isso é, OS coeficientes de filtro) utilizados no codificador para uma eanbuinidade em nartienlar O filtro ntilizado nara à entrada em particular pode ser selecionado com base em duas ou mais métricas, onde determinadas combinações de valores para as duas ou mais métricas são indexados para filtros específicos dentro de um conjunto de filtros. Em outros casos, duas ou mais métricas podem ser combinadas para formar uma única métrica. O mapeamento de filtros para métricas também pode ser sinalizado no fluxo de bits. Diferentes tipos de filtragem podem ser aplicados aos pixels ou blocos de pixels com base em duas ou mais métricas determinadas para os dados de vídeo. O filtro utilizado para um pixel em particular pode ser selecionado com base em duas ou mais métricas, tal como alguma combinação de uma métrica de atividade e uma métrica de direção. Uma métrica de atividade, por exemplo, pode quantificar a atividade associada com um ou mais blocos de . pixels dentro dos dados de vídeo. A métrica de atividade pode compreender uma métrica de variação indicativa da . variação de pixel dentro de um conjunto de pixels. Uma métrica de atividade pode ser específica de direção ou não específica de direção. Por exemplo, uma métrica de atividade não específica de direção pode incluir um valor Laplaciano de soma modificada, como explicado em maiores detalhes abaixo.
Exemplos de métricas de atividade específicas de direção incluem uma métrica de atividade horizontal, uma métrica de atividade vertical, uma métrica de atividade de 45 graus, e uma métrica de atividade de 135 graus. Uma métrica de direção pode para um bloco de pixels quantificar qualquer atividade horizontal, atividade vertical, Ou atividade diagonal de um pixel ou grupo de pixels, ou uma métrica de direção pode incluir uma comparação de atividade horizontal, atividade vertical, e/ou atividade diagonal, e nos valores de pixel em uma direção horizontal, atividade vertical geralmente se refere a mudanças nos valores de pixel em uma direção vertical, e a atividade diagonal geralmente se refere a mudanças nos valores de pixel em uma direção diagonal.
De acordo com as técnicas dessa descrição, ao se determinar um filtro para um bloco de pixels, um subconjunto de pixels dentro do bloco pode ser utilizado para reduzir a complexidade de codificação e decodificação.
Por exemplo, ao se determinar um filtro para um bloco de pixels 4x4, pode não ser necessário se utilizar todos os dezesseis pixels de bloco 4x4. Adicionalmente, de acordo com as técnicas dessa descrição, o subconjunto de pixels de dentro de um bloco atual sendo codificado pode ser selecionado de modo que as métricas sejam calculadas apenas . utilizando valores de pixel do bloco atual e não valores de pixel de blocos vizinhos. Por exemplo, a métrica para um . pixel sendo avaliada pode ser calculada com base na comparação do pixel com pixels vizinhos. Em alguns momentos, um ou mais dos pixels vizinhos para o pixel sendo avaliados pode estar em um bloco diferente do pixel sendo avaliado. Em outros casos, no entanto, um ou mais dos pixels vizinhos para o pixel podem estar no mesmo bloco que o pixel. De acordo com as técnicas dessa descrição, oO subconjunto de pixels pode ser selecionado para incluir pixels que não possuem pixels vizinhos em blocos vizinhos. Adicionalmente ou alternativamente, o subconjunto de pixels pode incluir pixels que possuem pixels vizinhos em blocos vizinhos, mas esses pixels vizinhos nos blocos vizinhos podem não ser utilizados ao se determinar a métrica. Baseando-se a determinação de uma métrica particular em pixels dentro de um bloco atual e não nos pixels dos blocos e/ou decodificador pode, em alguns casos, ser reduzida Ou até mesmo eliminada.
Em alguns casos, de acordo com a técnica dessa descrição, o subconjunto de pixels a partir de dentro de um bloco atual sendo codificado pode ser selecionado de modo que as métricas sejam calculadas apenas utilizando valores de pixel do bloco atual e os blocos vizinhos esquerdo e direito, mas não os valores de pixel dos blocos vizinhos superiores ou blocos vizinhos inferiores.
Como resultado da ordem de varredura utilizada ao se codificar blocos de vídeo, os armazenadores de linha para blocos vizinhos superior e inferior tendem a precisar armazenar muitos mais valores de pixel do que os armazenadores de linha para o armazenamento de valores de pixel dos blocos vizinhos esquerda e direita. e De acordo com as técnicas dessa descrição, uma unidade de filtro, tal como um filtro de loop de entrada . adaptativo, pode ser configurada para utilizar múltiplos filtros com base no mapeamento de filtro multimétrico.
Os múltiplos filtros podem ser utilizados em conjunto com uma única entrada ou múltiplas entradas.
Como será descrito em maiores detalhes abaixo, as múltiplas entradas descritas nessa descrição geralmente se referem aos dados de bloco de vídeo intermediários ou dados de imagem que são produzidos durante os processos de codificação e decodificação.
Múltiplas entradas associadas com um determinado bloco de vídeo podem incluir, por exemplo, um bloco reconstruído ou imagem (RI), um bloco ou imagem reconstruído pré- desbloqueio (pRI), um bloco ou imagem de predição (PI) e/ou uma imagem de erro de predição quantizada (EI). Em um único esquema de entrada, um filtro pode ser aplicado apenas a uma das entradas acima, tal como RI.
Além disso, como eaexvnlicado em maiores detalhes abaivwo., as técnicas de filtragem dessa descrição podem ser aplicadas às CUs de vários tamanhos utilizando um esquema de particionamento em árvore quaternária. Pela utilização de múltiplos filtros com mapeamento de filtro de múltiplas métricas para CUs divididas utilizando-se o esquema de particionamento em árvore quaternária, o desempenho de codificação de vídeo, como medido por uma ou ambas as taxas de compressão e qualidade de vídeo reconstruída, pode ser aperfeiçoado. Para se implementar as técnicas de filtragem de múltiplas métricas descritas acima, um codificador mantém, pela geração, atualização, armazenamento — ou outros mecanismos, um mapeamento de combinações de faixas para filtros. Como um exemplo, a combinação de uma primeira faixa para uma primeira métrica e uma primeira faixa para uma segunda métrica podem mapear para um primeiro filtro. A . combinação da primeira faixa para a primeira métrica e uma segunda faixa para a segunda métrica também podem mapear o * primeiro filtro ou podem mapear um segundo filtro. Se uma primeira métrica tiver oito faixas e a segunda métrica tiver quatro faixas, por exemplo, então as primeira e segunda métricas podem ter trinta e duas combinações de faixas, e cada uma das trinta e duas combinações pode ser mapeada para um filtro. Cada combinação, no entanto, não é necessariamente mapeada para um filtro único. Dessa forma, as trinta e duas combinações podem mapear quatro filtros, oito filtros, dez filtros, ou algum outro número de filtros. A fim de se aplicar os mesmos filtros como um codificador, o decodificador também pode manter os mesmos mapeamentos de combinações de faixas para filtros.
Essa descrição descreve as técnicas para sinalização de um codificador para um decodificador, em um fluxo de bits codificado, um mapeamento de combinações de faiva nara ne filtrao OD manreaamente nele (nAr avemelae associar cada combinação de faixa com uma identificação de filtro (ID). Uma forma simples de se sinalizar esse mapeamento é se utilizar uma palavra código para cada ID de filtro e, então, para cada combinação de faixas, enviar a palavra código da ID de filtro correspondente. Essa técnica, no entanto, é tipicamente ineficiente. As técnicas da presente descrição podem explorar as correlações dentro do mapeamento pela utilização de métodos de codificação diferencial. As combinações de faixas que compartilham uma faixa comum algumas vezes utilizam o mesmo filtro. Como um exemplo, a combinação de uma primeira faixa para uma primeira métrica e de uma primeira faixa para uma segunda métrica e a combinação da primeira faixa para a primeira métrica e uma segunda faixa para a segunda métrica compartilham uma faixa comum (a primeira faixa da primeira 2 métrica). Dessa forma, essas duas combinações podem, em alguns casos, mapear a mesma ID de filtro. Pela exploração ? dessa correlação, as técnicas dessa descrição podem reduzir o número de bits necessários para sinalizar o mapeamento das combinações de faixa para as IDs de filtro a partir de um codificador para um decodificador.
Em adição à sinalização do mapeamento das combinações de faixa para as IDs de filtro, essa descrição também descreve as técnicas de sinalização, em um fluxo de bits codificado, coeficientes de filtro para os filtros. AS técnicas dessa descrição incluem a utilização de métodos de codificação diferenciais para sinalizar os coeficientes de filtro de um codificador para um decodificador. Dessa forma, os coeficientes de filtro para um segundo filtro devem ser comunicados para um decodificador como informação de diferença, onde a informação de diferença descreve como modificar os coeficientes de filtro de um primeiro filtro IR Lava A meAAdeosos AS AaAASfiAadfdAaAntas Ah filtesa da esmsmsmeurdAa filtro.
As técnicas de codificação diferenciais podem ser mais eficientes (isso é, pode resultar em uma maior economia de bits) quando os coeficientes de filtro do primeiro e segundo filtros são mais similares do que comparado com quando os coeficientes de filtro do primeiro e segundo filtros soa mais similares em comparação com quando os coeficientes de filtro dos primeiro e segundo filtros são menos similares.
As técnicas dessa descrição incluem a determinação de uma ordem sequencial na qual sinalizar os coeficientes de filtro para os filtros.
As ordenações determinadas utilizando as técnicas descritas nessa descrição podem resultar em codificação de coeficientes de filtro diferenciais aperfeiçoados, e, dessa forma, pode em alguns casos resultar em uma economia de bits quando sinalizando os coeficientes de filtro. z Apesar das técnicas dessa descrição poderem, algumas vezes, ser descritas com referência à filtragem de 7 loop de entrada, as técnicas podem ser aplicadas à filtragem de loop de entrada, filtragem pós-loop, e outros esquemas de filtragem tal como a filtragem comutada.
A filtragen de loop de entrada geralmente se refere à filtragem na qual os dados filtrados é parte dos loops de codificação e decodificação de modo que os dados filtrados sejam utilizados para a intra ou intercodificação de predição.
A filtragem pós-loop se refere à filtragem que é aplicada aos dados de vídeo reconstruídos depois do loop de codificação.
Com a filtragen pós-loop, os dados não filtrados, em oposição aos dados filtrados, são utilizados para a intra ou intercodificação de predição.
Em algumas implementações, o tipo de filtragem pode comutar entre a filtragem pós-loop e à filtragem de loop de entrada, por exemplo, quadro-a-quadro, fatia-a-fatia, Ou outra base, e à
.
de loop de entrada pode ser sinalizada a partir do codificador para o decodificador para cada fatia, quadro, etc. As técnicas dessa descrição não estão limitadas à filtragem de loop de entrada ou pós-filtragem, e podem aplicar a uma ampla faixa de filtragem aplicada durante a codificação de vídeo. Nessa descrição, o termo "codificação" se refere à codificação ou decodificação. De forma similar, o termo "codificador" geralmente se refere a qualquer codificador de vídeo, decodificador de vídeo, ou codificador e decodificador de vídeo (codec). De acordo, o termo "codificador" é utilizado aqui para fazer referência a um dispositivo de computador especializado ou aparelho que realiza a codificação ou decodificação de vídeo. Adicionalmente, nessa descrição, o termo "filtro" geralmente se refere a um conjunto de coeficientes de : filtro. Por exemplo, um filtro 3x3 pode ser definido por um conjunto de 9 coeficientes de filtro, um filtro 5x5 pode * ser definido por um conjunto de 25 coeficientes de filtro, um filtro 9x5 pode ser definido por um conjunto de 45 coeficientes de filtro, e assim por diante. O termo "conjunto de filtros" geralmente se refere a um grupo de mais de um filtro. Por exemplo, um conjunto de dois filtros 3x3, pode incluir um primeiro conjunto de 9 coeficientes de filtro e um segundo conjunto de 9 coeficientes de filtro. De acordo com as técnicas descritas nessa descrição, para uma série de blocos de vídeo, tal como um quadro, fatia ou unidade de codificação maior (LCU), conjuntos de filtro de identificação de informação são sinalizados a partir do codificador para o decodificador em um cabeçalho para a série de blocos de vídeo. O termo "formato" algumas vezes chamado de "suporte de filtro", geralmente se refere ao número de fileiras e coeficientes de filtro e número de particular. Por exemplo, 9x9 é um exemplo de um primeiro formato, 9x5 é um exemplo de um segundo formato, e 5x9 é um exemplo de um terceiro formato. Em alguns casos, os filtros podem assumir formatos não retangulares incluindo formatos de diamante, formatos tipo diamante, formatos circulares, formatos tipo circulares, formatos hexagonais, formatos octogonais, formatos cruzados, formatos de X, formatos de T, outros formatos geométricos ou inúmeros outros formatos ou configurações.
A figura 1 é um diagrama em bloco ilustrando um sistema de codificação e decodificação de vídeo ilustrativo 110 que pode implementar as técnicas dessa descrição. Como ilustrado na figura 1, o sistema 110 inclui um dispositivo de origem 112 que transmite dados de vídeo codificados para um dispositivo de destino 116 através de um canal de - comunicação 115. O dispositivo de origem 112 e o dispositivo de destino 116 podem compreender qualquer uma . dentre uma ampla faixa de dispositivos. Em alguns casos, o dispositivo de origem 112 e o dispositivo de destino 116 podem compreender aparelhos de dispositivo de comunicação sem fio, tal como os radiotelefones via satélite ou celulares. As técnicas dessa descrição, no entanto, que se aplicam mais geralmente à filtragem de dados de vídeo, não são necessariamente limitadas a aplicativos ou configurações sem fio, e podem ser aplicadas a dispositivos com fio incluindo capacidades de codificação e/ou decodificação de vídeo. No exemplo da figura 1, O dispositivo de origem 112 inclui uma fonte de vídeo 120, um codificador de vídeo 122, um modulador/demodulador (modem) 123 e um transmissor
124. O dispositivo de destino 116 inclui um receptor 126, um modem 127, um decodificador de vídeo 128 e um o codificador de vídeo 122 do dispositivo de origem 112 pode ser configurado para selecionar um ou mais conjuntos de coeficientes de filtro para múltiplas entradas em um processo de filtragem de bloco de vídeo e então codificar os um ou mais conjuntos de coeficientes de filtro selecionados. Filtros específicos dos um ou mais conjuntos de coeficientes de filtro podem ser selecionados com base em uma ou mais métricas para uma ou mais entradas, e os coeficientes de filtro podem ser utilizados para filtrar uma ou mais entradas. As técnicas de filtragem dessa descrição são geralmente compatíveis com quaisquer técnicas para codificação ou sinalização de coeficientes de filtro em um fluxo de bits codificado.
De acordo com as técnicas dessa descrição, um dispositivo incluindo um codificador de vídeo 122 pode - sinalizar para um dispositivo incluindo o decodificador de vídeo 128 um ou mais conjuntos de coeficientes de filtro . para uma série de blocos de vídeo, tal com um quadro ou uma fatia. Para a série de blocos de vídeo, o codificador de vídeo 122 pode, por exemplo, sinalizar um conjunto de filtros a ser utilizado com todas as entradas, ou pode sinalizar múltiplos conjuntos de filtros a serem utilizados com múltiplas entradas (um conjunto por entrada, por exemplo). Cada bloco de vídeo ou CU dentro da série de blocos de vídeo pode então conter sintaxe adicional para identificar qual filtro ou filtros do conjunto de filtros devem ser utilizados para cada entrada desse bloco de vídeo, ou de acordo com as técnicas dessa descrição, qual filtro ou filtros do conjunto de filtros devem ser utilizados pode ser determinado com base em duas ou mais métricas associadas com uma ou mais das entradas. Mais especificamente, o codificador de vídeo 122
" conjuntos de filtros para uma série de blocos de vídeo, aplicar filtros a partir do conjunto a pixels ou grupos de pixels de entradas associadas com as CUs das séries de blocos de vídeo durante o processo de codificação, e então codificar os conjuntos de filtros (isso é, conjuntos de coeficientes — de filtro) para comunicação para OO decodificador de vídeo 128 do dispositivo de destino 116. O codificador de vídeo 122 pode determinar uma ou mais métricas associadas com as entradas das CUs codificadas a fim de selecionar quais filtros a partir dos conjuntos de filtros utilizar com os pixels ou grupos de pixels para essa CU em particular.
O codificador de vídeo 122 também pode sinalizar para o decodificador de vídeo 128, como parte do fluxo de bits codificado, um mapeamento de combinações de faixas para filtros dentro de um conjunto de . filtros.
No lado do decodificador, o decodificador de . vídeo 128 pode determinar os coeficientes de filtro com base na informação de filtro recebida na sintaxe de fluxo de bits.
O decodificador de vídeo 128 pode decodificar os coeficientes de filtro com base na decodificação direta ou decodificação de predição dependendo de como os coeficientes de filtro forma decodificados, o que pode ser sinalizado como parte da sintaxe de fluxo de bits.
Adicionalmente, o fluxo de bits pode incluir informação de sintaxe de descrição de filtro para descrever os filtros para um conjunto de filtros.
Com base na sintaxe de descrição de filtro, o decodificador 128 pode reconstruir os coeficientes de filtro com base em informação adicional recebida do codificador 122. O sistema ilustrado 110 da figura 1 é meramente ilustrativo.
As técnicas de filtragem dessa descrição podem ser realizadas por quaisquer de origem 112 e o dispositivo de destino 116 são meramente exemplos dos dispositivos de codificação que podem suportar tais técnicas. O decodificador de vídeo 128 pode determinar também o mapeamento das combinações de faixas para filtros com base na informação de filtro recebida na sintaxe de fluxo de bits.
O codificador de vídeo 122 do dispositivo de origem 112 pode codificar os dados de vídeo recebidos a partir da fonte de vídeo 120 utilizando as técnicas dessa descrição. A fonte de vídeo 120 pode compreender um dispositivo de captura de vídeo, tal como uma câmera de vídeo, um arquivo de vídeo contendo vídeo capturado anteriormente, ou uma alimentação de vídeo a partir de um provedor de conteúdo de vídeo. Como uma alternativa adiciona, a fonte de vídeo 120 pode gerar dados com base em . gráfico de computador como o vídeo fonte, ou uma combinação de vídeo ao vivo, vídeo arquivado, e vídeo gerado por ] computador. Em alguns casos, se a fonte de vídeo 120 for uma câmera de vídeo, O dispositivo de origem 112 e o dispositivo de destino 115 podem formar os chamados telefones de câmera ou vídeo telefones. Em cada caso, O vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo. Uma vez que os dados de vídeo são codificados pelo codificador de vídeo 122, a informação de vídeo codificada pode então ser modulada pelo modem 123 de acordo com um padrão de comunicação, por exemplo, tal como acesso múltiplo por divisão de código (CDMA), acesso múltiplo por divisão de frequência (FDMA), multiplexação por divisão de frequência ortogonal (OFDM), ou qualquer outro padrão ou técnica de comunicação, e transmitido para o dispositivo de destino 116 através do transmissor 124. O modem 123 pode
. outros componentes projetados para modulação de sinal. O transmissor 124 pode incluir circuitos projetados para transmitir os dados, incluindo amplificadores, filtros e uma ou mais antenas.
O receptor 126 do dispositivo de destino 116 recebe informação através do canal 115, e o modem 127 demodula a informação. O processo de decodificação de vídeo realizado pelo decodificador de vídeo 128 pode incluir filtragem, por exemplo, como parte da decodificação de loop de entrada ou como uma etapa de pós-filtragem seguindo o loop de decodificação. De qualquer forma, o conjunto de filtros aplicado pelo decodificador de vídeo 128 para uma fatia em particular ou quadro pode ser decodificado utilizando as técnicas dessa descrição. A informação de filtro decodificada pode incluir a identificação da sintaxe . de descrição de filtro no fluxo de bits codificado. Se, por exemplo, a codificação de predição for utilizada para filtrar coeficientes, similaridades entre diferentes coeficientes de filtro podem ser exploradas para se reduzir a quantidade de informação transportada através do canal
115. Em particular, um filtro (isso é, um conjunto de coeficientes de filtro) pode ser codificado de forma preditível como valores de diferença relativos a outro conjunto de coeficientes de filtro associados com um filtro diferente. O filtro diferente pode, por exemplo, ser associado com uma fatia ou quadro diferente. Em tal caso, o decodificador de vídeo 128 pode receber um fluxo de bits codificado compreendendo blocos de vídeo e informação de filtro que identifica Oo quadro ou fatia diferente com o qual o filtro diferente é o filtro associado. A informação de filtro também inclui valores de diferença que define o filtro atual com relação ao filtro da CU diferente. Em mae ie Ia mo tra IA VAS= As Alfa vANAHS ear AAm AAméÉVvAAHAAV
. valores de diferença de coeficiente de filtro que definem coeficientes de filtro para o filtro atual com relação aos coeficientes de filtro de um filtro diferente utilizado para uma CU diferente.
O codificador de vídeo 128 decodifica os blocos de vídeo, gera os coeficientes de filtro, e filtra os blocos de vídeo decodificados com base nos coeficientes de filtro gerados. O decodificador de vídeo 128 pode gerar os coeficientes de filtro com base na sintaxe de descrição de filtro recuperada a partir do fluxo de bits. Os blocos de vídeo decodificados e filtrados podem ser montados em quadros de vídeo para formar os dados de vídeo decodificados. O dispositivo de exibição 128 exibe os dados de vídeo decodificados para um usuário e pode compreender qualquer um dentre uma variedade de dispositivos de . exibição tal como um tubo de raio catodo (CRT), um monitor de cristal líquido (LCD), um monitor de plasma, um monitor ] de diodo de emissão de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.
O canal de comunicação 115 pode compreender qualquer meio de comunicação com ou sem fio, tal como um espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão física, ou qualquer combinação de mídia com ou sem fio. O canal de comunicação 115 pode formar parte de uma rede com base em pacote, tal como uma rede de área local, uma rede de área ampla, ou uma rede global tal como a Internet. O canal de comunicação 115 geralmente representa qualquer meio de comunicação adequado, Ou coleção de diferentes mecanismos de comunicação, para transmissão de dados de vídeo a partir do dispositivo de origem 112 para o dispositivo de destino 116. Novamente, a figura 1 é meramente ilustrativa e as técnicas dessa
.
de vídeo (por exemplo, codificação ou decodificação de vídeo) que não incluem necessariamente qualquer comunicação de dados entre os dispositivos de codificação e decodificação. Em outros exemplos, os dados devem ser recuperados a partir de uma memória local, sequenciados através de uma rede, ou similares.
Alternativamente, os dados codificados podem ser enviados a partir do codificador de vídeo 122 para um dispositivo de armazenamento 132. De forma similar, os dados codificados podem ser acessados a partir do dispositivo de armazenamento 132 pelo decodificador de vídeo 128. O dispositivo de armazenamento 132 pode incluir qualquer um dentre uma variedade de meios de armazenamento de dados acessados localmente ou distribuídos tal como um disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, . memória volátil ou não volátil, ou qualquer outro meio de armazenamento digital adequado para oO armazenamento de 7 dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento 132 pode corresponder a um servidor de arquivo ou outro dispositivo de armazenamento intermediário que possa manter o vídeo codificado gerado pelo dispositivo de origem 112. O dispositivo de destino 116 pode acessar os dados de vídeo armazenados do dispositivo de armazenamento 132 através de fluxo contínuo e download. O servidor de arquivo pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para oO dispositivo de destino 116. Servidores de arquivo ilustrativos incluem um servidor de rede (por exemplo, para um site da rede), um servidor FTP, dispositivos de armazenamento anexados à rede (NAS), ou um disco rígido local. O dispositivo de destino 14 pode acessar os dados de padrão, incluíndo uma conexão de Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, DSL, modem a cabo, etc.), ou uma combinação de ambos que seja adequada para acessar os dados de vídeo codificados armazenados em um servidor de arquivo. A transmissão dos dados de vídeo codificados a partir do dispositivo de armazenamento 132 pode ser uma transmissão em fluxo contínuo, uma transmissão de download, ou uma combinação de ambos.
As técnicas dessa descrição não são necessariamente limitadas aos aplicativos ou configurações sem fio. As técnicas podem ser aplicadas à codificação de vídeo em suporte de qualquer aplicativo de multimídia, tal como difusões de televisão através do ar, transmissões de televisão a cabo, transmissões de televisão via satélite, . transmissões de vídeo de fluxo contínuo, por exemplo, através da Internet, codificação de vídeo digital para . armazenamento em um meio de armazenamento de dados, decodificação do vídeo digital armazenado em um meio de armazenamento de dados, ou outros aplicativos. Em alguns exemplos, o sistema 110 pode ser configurado para suportar a transmissão de vídeo de uma via ou duas vias para suportar aplicativos tal como fluxo contínuo de vídeo, reprodução de vídeo, difusão de vídeo e/ou vídeo telefonia.
O codificador de vídeo 122 e o decodificador de vídeo 128 podem operar de acordo com um padrão de compressão de vídeo tal como ITU-T H.264, alternativamente referido como MPEG-4, parte 10, Codificação de Vídeo Avançada (AVC), que será utilizada em partes dessa descrição para fins de explicação. No entanto, muitas dessas técnicas dessa descrição podem ser prontamente aplicadas a qualquer um dentre uma variedade de outros recém emergente. Geralmente, qualquer padrão que permita a filtragem no codificador e decodificador pode se beneficiar dos vários aspectos do ensinamento dessa descrição.
Apesar de não ilustrado na figura 1, em alguns aspectos, o codificador de vídeo 122 e o decodificador de vídeo 28 podem, cada um, ser integrados com um codificador e decodificador de áudio, e pode incluir unidades MUX-DEMUX adequadas, ou outro hardware e software, para manusear a codificação de ambos o áudio e o vídeo em um fluxos de dados comum ou fluxos de dados separados. Se aplicável, as unidades MUX-DEMUX podem se conformar ao protocolo de multiplexador ITU H.223 ou outros protocolos tal como Oo protocolo de datagrama de usuário (UDP).
O codificador de vídeo 122 e o decodificador de vídeo 128 podem, cada um, ser implementados como um ou mais . microprocessadores, processadores de sinal digital (DSPs), circuitos integrados específicos de aplicativo (ASICS), " arranjos de porta programáveis em campo (FPGAs), lógica ' discreta, software, hardware, firmware, ou qualquer combinação dos mesmos. Cada codificador de vídeo 122 e decodificador de vídeo 128 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador /decodificador combinado (CODEC) em um dispositivo móvel respectivo, dispositivo de assinante, dispositivo de difusão, servidor ou similar.
Em alguns casos, os dispositivos 112, 116 podem operar de uma forma substancialmente simétrica. Por exemplo, cada um dos dispositivos 112, 116 pode incluir componentes de codificação e decodificação de vídeo. Dessa forma, o sistema 110 pode suportar transmissão de vídeo de via única ou duas vias entre os dispositivos de vídeo 112,
. 116, por exemplo, para o fluxo contínuo de vídeo, reprodução de vídeo, difusão de vídeo ou vídeo telefonia.
Durante O processo de codificação, O codificador de vídeo 122 pode executar um número de técnicas ou etapas de codificação.
Em geral, o codificador de vídeo 122 opera em blocos de vídeo dentro de quadros de vídeo individuais a fim de codificar os dados de vídeo.
Em um exemplo, um bloco de vídeo pode corresponder a um macro bloco ou uma partição de um macro bloco.
Os macro blocos são um tipo de bloco de vídeo definido pelo padrão ITU H.264 e outros padrões.
Macro blocos se referem tipicamente a blocos de dados 16x16, apesar de o termo ser algumas vezes utilizados de forma genérica para fazer referência a qualquer bloco de vídeo de tamanho NxXN ou NxM.
O padrão ITU-T H.264 suporta a intrapredição em vários tamanhos de bloco, tal como 16x16, . 8x8 ou 4x4 para componentes luminância, e 8x8 para componentes de crominância, além de interpredição em vários " tamanhos de bloco, tal como l16x16, 16x8, 8x16, 8x8, 8x4, 1x8 e 4x4 para componentes luminância e tamanhos escalonados correspondentes para componentes crominância.
Nessa descrição, "NxN" se refere às dimensões de pixel do bloco em termos de dimensões vertical e horizontal, por exemplo, 16x16 pixels.
Em geral, um bloco 16x1l6 terá 16 pixels em uma direção vertical e 16 pixels em uma direção horizontal.
Da mesma forma, um bloco NxN geralmente possui N pixels em uma direção vertical e N pixels em uma direção horizontal, onde N representa um valor inteiro positivo.
Os pixels em um bloco podem ser dispostos em fileiras e colunas.
O padrão HEVC emergente define novos termos para blocos de vídeo.
Em particular, os blocos de vídeo (ou partições dos mesmos) podem ser referidos como "unidades de
“ codificadas maiores (LCUS) podem ser divididas em CUs menores de acordo com um esquema de particionamento em árvore quaternária, e as diferentes CUs que são definidas no esquema podem ser adicionalmente divididas em unidades de predição (PUs). LCUs, CUSs e PUs são todos blocos de vídeo dentro do significado dessa descrição.
Outros tipos de blocos de vídeo também podem ser adicionados, consistentes com o padrão HEVC ou outros padrões de codificação de vídeo.
Dessa forma, a frase "blocos de vídeo" se refere a qualquer tamanho de bloco de vídeo.
CUs separadas podem ser incluídas para componentes luminância e tamanhos escalonados para componentes de crominância para um determinado pixel, apesar de outros espaços coloridos poderem ser utilizados também.
Os blocos de vídeo podem ter tamanhos fixos ou “ variáveis, e podem diferir em tamanho de acordo com um padrão de codificação especificado.
Cada quadro de vídeo " pode incluir uma pluralidade de fatias.
Cada fatia pode incluir uma pluralidade de blocos de vídeo, que podem ser dispostos em partições, também referidas como sub-blocos.
De acordo com o esquema de particionamento em árvore quaternária referido acima e descrito em maiores detalhes abaixo, uma primeira CU N/2xN/2x pode compreender um sub- bloco de uma LCU NxN, uma segunda CU N/4xN/4x também pode compreender um sub-bloco da primeira CU.
Uma PU N/8xN/8x pode compreender um sub-bloco da segunda CU.
De forma similar, como um exemplo adicional, os tamanhos de bloco que são inferiores a 1l6xl16 podem ser referidos como partições de um bloco de vídeo 16x16 ou como sub-blocos de bloco de vídeo 16x16. Da mesma forma, para um bloco NxN, os tamanhos de bloco inferiores a NXN podem ser referidos como partições ou sub-blocos de bloco NxXN.
Os blocos de vídeo a A AAA ae a.
+ pixel, ou blocos de coeficientes de transformada no domínio de transformada, por exemplo, seguindo a aplicação de uma transformada tal como uma transformada discreta de cosseno (DCT), uma transformada de inteiro, uma transformada de ondas curtas, ou uma transformada conceitualmente similar de dados de bloco de vídeo residuais representando diferenças de pixel entre os blocos de vídeo codificados e os blocos de vídeo de predição. Em alguns casos, um bloco de vídeo pode compreender blocos de coeficientes de transformada quantizados no domínio de transformada.
Os dados de sintaxe dentro de um fluxo de bits podem definir uma LCU para um quadro ou fatia, que é uma unidade de codificação maior em termos de número de pixels para esse quadro ou fatia. Em geral, uma LCU ou CU possui uma finalidade similar a um macro bloco codificado de . acordo com H.264, exceto que LCUS e CUs não possuem uma distinção de tamanho específica. Ao invés disso, um tamanho º de LCU pode ser definido quadro-a-quadro, fatia-a-fatia, e uma LCU é dividida em CUs. Em geral, referências nessa descrição a uma CU podem fazer referência a uma LCU de uma imagem ou uma sub-CU de uma LCU. Uma LCU pode ser dividida em sub-CUs, e cada sub-CU pode ser dividida em sub-CUs. Os dados de sintaxe para um fluxo de bits podem definir um número máximo de vezes que uma LCU pode ser dividida, com referência a uma profundidade CU. De acordo, um fluxo de bits pode definir também uma menor unidade de codificação (SCU). Essa descrição também utiliza os termos "bloco" e "bloco de vídeo" para referir a qualquer uma dentre LCU, CU, PU, SCU ou TU. Como introduzido acima, uma LCU pode ser associada com uma estrutura de dados em árvore quaternária. Em geral, uma estrutura de dados em árvore quaternária
* 1 28/104 « uma CU for dividida em quatro sub-CUs, oO nó correspondente à CU inclui quatro nós folha, cada um dos quais corresponde a uma das sub-CUs. Cada nó da estrutura de dados em árvore quaternária pode fornecer dados de sintaxe para a CU correspondente. Por exemplo, um nó em árvore quaternária pode incluir um indicador de divisão, indicando se a CU correspondente ao nó é dividida em sub-CUs. Os elementos de sintaxe para uma CU podem ser definidos de forma recursiva, e podem depender de se a CU é dividida em sub-CUs.
Uma CU que não é dividida pode incluir uma ou mais unidades de predição (PUs). Em geral, uma PU representa toda ou uma parte da CU correspondente, e inclui dados para a recuperação de uma amostra de referência para a PU. Por exemplo, quando à PU é codificada por intramodo, a PU pode incluir dados descrevendo um modo de . intrapredição para a PU. Como outro exemplo, quando a PU é codificada intermodo, a PU pode incluir dados definindo um " vetor de movimento para a PU. Os dados definindo o vetor de movimento podem descrever, por exemplo, um componente horizontal do vetor de movimento, um componente vertical do vetor de movimento, uma resolução para o vetor de movimento (por exemplo, precisão de um quarto de pixel ou precisão de um oitavo de pixel), um quadro de referência ao qual os pontos de vetor de movimento e/ou uma lista de referência (por exemplo, lista O ou lista 1) para o vetor de movimento. Os dados para a CU definindo as PUs também pode descrever, por exemplo, a partição da CU em uma ou mais PUs. Os modos de partição podem diferir entre se a CU não foi codificada, modo de intrapredição codificado, ou modo de interpredição codificado.
Uma CU possuindo uma ou mais PUs também pode incluir uma ou mais unidades de transformada (TUS). As TUs
. Í 29/104 “ transformada residuais, que são tipicamente quantizados.
Em particular, a predição a seguir utilizando uma PU, um codificador de vídeo pode calcular os valores residuais para a parte da CU correspondendo à PU.
Os valores residuais podem ser transformados, quantizados, varridos e armazenados em uma TU, que podem ter tamanhos variáveis correspondentes ao tamanho da transformada que foi realizada.
De acordo, uma TU não é necessariamente limitada ao tamanho de uma PU.
Dessa forma, as TUs podem ser maiores ou menores do que as PUs correspondentes para a mesma CU.
Em alguns exemplos, o tamanho máximo de uma TU pode ser o tamanho da CU correspondente.
Novamente, as TUs podem compreender as estruturas de dados que incluem os coeficientes de transformada residual associados com uma determinada CU. . As figuras 2A e 2B são diagramas conceituais ilustrando uma árvore quaternária ilustrativa 250 e uma LCU ' correspondente 272. A figura 2A apresenta uma árvore quaternária ilustrativa 250, que inclui nós dispostos de forma hierárquica.
Cada nó em uma árvore quaternária, tal como a árvore quaternária 250, pode ser um nó folha sem filhos, ou pode ter quatro nós filho.
No exemplo da figura 2A, árvore quaternária 250 inclui no exemplo da figura 2A, árvore quaternária 250 inclui nó raiz 252. O nó raiz 252 possui quatro nós filho, incluindo nós folha 256A a 256C (nós folha 256) e o nó 254. Visto que o nó 254 não é um nó folha, o nó 254 inclui quatro nós filho, que, nesse exemplo, são nós folha 258A a 258D (nós folha 258). A árvore quaternária 250 pode incluir dados descrevendo as características de uma LCU correspondente, tal como LCU 272 nesse exemplo.
Por exemplo, árvore quaternária 250, por sua estrutura, pode descrever a e A o A DN AAA ro SSS Ah z 30/104 . um tamanho de 2Nx2N.
LCU 272, nesse exemplo, possui quatro sub-CUs 276A a 276C (sub-CUs 276) e 274, cada uma de tamanho NxN.
A sub-CU 274 é adicionalmente dividida em quatro sub-CUs 278A-278D (sub-CUs 278), cada um de tamanho N/2xN/2. A estrutura de árvore quaternária 250 corresponde à divisão de LCU 272, nesse exemplo.
Isso é, o nó raiz 252 corresponde a LCU 272, nós folha 256 correspondem a sub-CUs 276, o nó 254 corresponde à sub-CU 274, e os nós folha 258 correspondem às sub-CUs 278. Os dados para os nós de árvore quaternária 250 podem descrever se a CU corresponderem ao nó é dividida.
Se a CU for dividida, quatro nós adicionais podem estar presentes na árvore quaternária 250. Em alguns exemplos, um nó de árvore quaternária pode ser implementado de forma similar ao pseudocódigo a seguir: : quadtree node ( boolean split flag(1); " // dados de sinalização if (split flag) ( quadtree node child1; quadtree node child2; quadtree node child3; quadtree node child4; ) ) O valor split flag pode ser um valor de um bit representativo de se a CU correspondente ao nó atual é dividido.
Se a CU não for dividida, o valor split value pode ser "O", enquanto se a CU for dividida, o valor split value pode ser "1". Com relação ao exemplo de árvore quaternária 250, um conjunto de valores de indicador de divisão podem ser 101000000.
.
A . 31/104 “ Em alguns exemplos, cada um dos sub-CUs 276 e sub-CUs 278 pode ser codificado por intrapredição utilizando o mesmo modo de intrapredição. De acordo, oO codificador de vídeo 122 pode fornecer uma indicação do modo de intrapredição no nó raiz 252. Ademais, determinados tamanhos de sub-CUs podem ter múltiplas transformadas possíveis para um modo intrapredição em particular. O codificador de vídeo 122 pode fornecer uma indicação da transformada para uso para tais sub-CUs no nó raiz 252. Por exemplo, sub-CUs de tamanho N/2xN/2x podem ter múltiplas transformadas possíveis disponíveis. O codificador de vídeo 122 pode sinalizar a transformada para uso no nó raiz 252. De acordo, o decodificador de vídeo 128 pode determinar a transformada para aplicação de sub-CUs 278 com base no modo de intrapredição sinalizado no nó raiz 252 e a transformada . sinalizada no nó raiz 252. Como tal, o codificador de vídeo 122 não precisa Ú sinalizar as transformadas para aplicação às sub-CUs 276 e sub-CUs 278 nos nós folha 256 e nós folha 258, mas podem, ao invés disso, simplesmente sinalizar um modo de intrapredição e, em alguns exemplos, uma transformada para aplicação de determinados tamanhos de sub-CUs, no nó raiz 252, de acordo com as técnicas dessa descrição. Dessa forma, essas técnicas podem reduzir o custo de overhead de sinalização de funções de transformada para cada sub-CU de uma LCU, tal como a LCU 272.
Em alguns exemplos, os modos de intrapredição para sub-CUs 276 e/ou sub-CUs 278 podem ser diferentes dos modos de intrapredição para a LCU 272. O codificador de vídeo 122 e o decodificador de vídeo 130 pode ser configurado com as funções que mapeiam um modo de intrapredição sinalizado no nó raiz 252 para um modo de intranrediecão disnonível nara enb-Clcoc 276 e/O0O1 enb-Clla 2978.
* P 32/104 A função pode fornecer um mapeamento de muitos para um de modos de intrapredição disponíveis para LCU 272 para os modos de intrapredição para sub-CUs 276 e/ou sub-CUs 278. Uma fatia pode ser dividida em blocos de vídeo (ou LCUS) e cada bloco de vídeo pode ser dividido de acordo para a estrutura de árvore quaternária descrita com relação às figuras 2A e B. Adicionalmente, como ilustrado na figura 2C, os sub-blocos de árvore quaternária indicados por 'LIGADO' podem ser filtrados pelos filtros de loop descritos aqui, enquanto os sub-blocos de árvore quaternária indicados por 'DESLIGADO' podem não ser filtrados. A decisão de se ou não filtra um determinado bloco ou sub-bloco pode ser determinada no codificador pela comparação do resultado filtrado e resultado não filtrado com relação ao bloco original sendo codificado. A figura 2D : é uma árvore de decisão representando as decisões de Ú partição que resultam no particionamento em árvore quaternária ilustrado na figura 2C. Uma filtragem real aplicada a quaisquer pixels para os blocos 'LIGADOS', pode ser determinada com base nas métricas discutidas aqui.
Em particular, a figura 2C pode representar um bloco de vídeo relativamente grande que é dividido de acordo com um esquema de particionamento em árvore quaternária em blocos de vídeo menores de vários tamanhos.
Cada bloco de vídeo é rotulado (ligado ou desligado) na figura 2C para ilustrar se a filtragem deve ser aplicada ou evitada para esse bloco de vídeo. O codificador de vídeo pode definir esse mapa de filtro pela comparação de versões filtradas e não filtradas de cada bloco de vídeo com o bloco de vídeo original sendo codificado.
Novamente, a figura 2D é uma árvore de decisão correspondendo às decisões de partição que resultam no mae io AiAnNAmMAnNdhA Am freruoArPA Ana tarnrária dJignotrada na fimqmora
. 33/104 7 ; 2C, Na figura 2C, cada circulo pode corresponder a uma CU.
Se o circulo incluir um indicador "l", então essa CU é adicionalmente dividida em quatro CUs a mais, mas se o circulo incluir um indicador "0", então essa CU não é mais dividida.
Cada circulo (por exemplo, correspondente às CUs) também inclui um diamante associado.
Se o indicador no diamante para uma determinada CU for configurado para 1, então a filtragen é "LIGADA" para essa CU, as se o indicador no diamante para uma determinada CU for configurado para 0, então a filtragem é desligada.
Dessa forma, as figuras 2C e 2D podem ser visualizadas individual ou coletivamente visto que O mapa de filtro que pode ser gerado em um codificador e comunicado para um decodificador pelo menos uma vez por fatia de dados de vídeo codificados a fim de comunicar o nível de particionamento em árvore ? quaternária para um dado bloco de vídeo (por exemplo, uma LCU) se ou não aplica a filtragem a cada bloco de vídeo ' particionado (por exemplo, cada CU dentro da LCU). Blocos de vídeo menores podem fornecer melhor resolução e podem ser utilizados para locais de um quadro de vídeo que incluem altos níveis de detalhamento.
Os blocos de vídeo maiores podem fornecer maior eficiência de codificação e podem ser utilizados para locais de um quadro de vídeo que incluem um menor nível de detalhamento.
Uma fatia pode ser considerada uma pluralidade de blocos de vídeo e/ou sub-blocos.
Cada fatia pode ser uma série descodificável independentemente de blocos de vídeo de um quadro de vídeo.
Alternativamente, os quadros propriamente ditos podem ser uma série decodificável de blocos de vídeo, ou outras partes de um quadro podem ser definidas como séries decodificáveis de blocos de vídeo.
O termo "série de blocos de vídeo" pode se referir a qualquer parte
' 34/104 . , como todo um quadro, uma fatia de um quadro, um grupo de imagens (GOP) também referido como uma sequência, ou outra unidade decodificável independentemente definida de acordo com as técnicas de codificação aplicáveis. Aspectos dessa descrição podem ser descritos com referência aos quadros ou fatias, mas tais referências são meramente ilustrativas. Deve ser compreendido que geralmente qualquer série de blocos de vídeo pode ser utilizada ao invés de um quadro ou uma fatia.
Os dados de sintaxe podem ser definidos com base em unidade codificada de modo que cada CU inclua dados de sintaxe associados. A informação de filtro descrita aqui pode ser parte de tal sintaxe para uma CU, mas pode mais provavelmente ser parte da sintaxe para uma série de blocos de vídeo tal como um quadro, uma fatia, um GOP, LCU ou uma : sequência de quadros de vídeo, ao invés de uma CU. Os dados de sintaxe podem indicar o conjunto ou conjuntos de filtros ' a serem utilizados com CUs da fatia ou quadro. Adicionalmente, nem toda a informação de filtro precisa necessariamente ser incluída no cabeçalho de uma série comum de blocos de vídeo. Por exemplo, a sintaxe de descrição de filtro pode ser transmitida em um cabeçalho de quadro, enquanto outra informação de filtro é sinalizada em um cabeçalho para uma LCU.
O codificador de vídeo 122 pode realizar a codificação por predição na qual um bloco de vídeo sendo codificado é comparado com um quadro de predição (ou outra CU) a fim de identificar um bloco de predição. As diferenças entre o bloco de vídeo atual sendo codificado e o bloco de predição são codificadas como um bloco residual, e a sintaxe de predição é utilizada para identificar o bloco de predição. O bloco residual pode ser transformado e ao
' 35/104 eo , um processo DCT ou processo conceitualmente similar, transformadas de inteiro, transformadas de ondas curtas, ou outros tipos de transformadas. Em um processo DCT, como um exemplo, o processo de transformada converte um conjunto de valores de pixel em coeficientes de transformada que podem representar a energia dos valores de pixel no domínio de frequência. A quantização é tipicamente aplicada aos coeficientes de transformada, e geralmente envolve um processo que limita Oo número de bits associados com qualquer coeficiente de transformada determinado.
Depois da transformada e quantização, a codificação por entropia pode ser realizada nos blocos de vídeo residuais quantizados e transformados. Os elementos de sintaxe, tal como a informação de filtro e os vetores de predição definidos durante a codificação, também podem ser : incluídos no fluxo de bits codificado por entropia para cada CU. Em geral, a codificação por entropia compreende um ' ou mais processos que comprimem coletivamente uma sequência de coeficientes de transformada quantizados e/ou Outra informação de sintaxe. As técnicas de varredura, tal como técnicas de varredura em ziguezague, são realizadas em coeficientes de transformada quantizados, por exemplo, como parte do processo de codificação por entropia, a fim de definir um ou mais vetores unidimensionais serializados de coeficientes a partir dos blocos de vídeo bidimensionais. Outras técnicas de varredura, incluindo outras ordens de varredura ou varreduras adaptativas, também podem ser utilizadas, e possivelmente sinalizadas no fluxo de bits codificado. Em qualquer caso, os coeficientes varridos são então codificados por entropia juntamente com qualquer informação de sintaxe, por exemplo, através de codificação de comprimento variável adaptativa de conteúdo (CAVLC),
' 36/104 codificação aritmética binária adaptativa de contexto (CABAC), Ou outro processo de codificação por entropia.
Como parte do processo de codificação, os blocos de vídeo codificados podem ser decodificados a fim de gerar os dados de vídeo utilizados para a codificação com base em predição subsequente de blocos de vídeo subsequentes.
Nesse estágio, a filtragen pode ser realizada a fim de aperfeiçoar a qualidade de vídeo, e, por exemplo, remover os artefatos de bloqueio do vídeo decodificado.
Os dados filtrados devem ser utilizados para predição de outros blocos de vídeo, caso no qual a filtragem é referida como filtragen de "loop de entrada". Alternativamente, a predição de outros blocos de vídeo pode ser baseada em dados não filtrados, caso no qual a filtragem é referida como "pós filtragem". " Com base em quadro-a-quadro, fatia-a-fatia e LCU- a-LCU, O codificador de vídeo 122 pode selecionar um ou ' mais conjuntos de filtros, e com base em unidade codificada-a-unidade codificada, o codificador pode determinar se ou não aplica filtragem.
Para as CUs que devem ser filtradas, o codificador pode realizar a filtragem com base em pixel-a-pixel ou grupo-a-grupo, onde um grupo pode, por exemplo, ser um bloco de pixels 2x2 ou um bloco de pixels 4x4. Essas seleções podem ser feitas de forma a promover a qualidade de vídeo.
Tais conjuntos de filtros podem ser selecionados a partir dos conjuntos predefinidos de filtros, ou podem ser adaptativamente definidos para promover a qualidade de vídeo.
Como um exemplo, o codificador de vídeo 122 pode selecionar Ou definir vários conjuntos de filtros para um determinado quadro ou fatia de modo que os diferentes filtros sejam utilizados para diferentes pixels ou grupos de pixels de
* 37/104 associada a uma CU, vários conjuntos de coeficientes de filtro podem ser definidos, e duas ou mais métricas associadas com os pixels da CU podem ser utilizadas para determinar qual filtro do conjunto de filtros utilizar com tais pixels ou grupos de pixels.
Em alguns caos, o codificador de vídeo 122 pode aplicar vários conjuntos de coeficientes de filtro e selecionar um ou mais conjuntos que produzem o vídeo de melhor qualidade em termos de quantidade de distorção de bloco codificado e bloco original, e/ou níveis mais altos de compressão.
Em qualquer caso, uma vez selecionado, o conjunto de coeficientes de filtro aplicado pelo codificador de vídeo 122 para cada CU pode ser codificado e comunicado para o decodificador de vide 128 do dispositivo 15) de destino 118 de modo que o decodificador de vídeo 128 . possa aplicar a mesma filtragem que foi aplicada durante o processo de codificação para cada CU determinada. : Quando duas ou mais métricas são utilizadas para determinação de qual filtro utilizar com uma entrada em particular para uma CU, a seleção do filtro para essa CU em particular não precisa necessariamente ser comunicada para o decodificador de vídeo 128. Ao invés disso, oO decodificador de vídeo 128 também pode calcular as duas ou mais métrica,s e com base na informação de filtro previamente fornecida pelo codificador de vídeo 122, combinar a combinação de duas ou mais métricas com um filtro em particular.
A figura 3 é um diagrama em bloco ilustrando um codificador de vídeo 350 consistente com essa descrição.
O codificador de vídeo 350 pode corresponder ao codificador de vídeo 122 do dispositivo 120, ou um codificador de vídeo de um dispositivo diferente.
Como ilustrado na figura 3, O MILL AA daS JA soda s ICE A Jan Ii amo méáde la de nessa AIATA 999
' 38/104 ES ' somadores 348 e 351, e uma memória 334. O codificador de vídeo 350 também inclui uma unidade de transformada 338 e uma unidade de quantização 340, além de uma unidade de quantização inversa 342 e uma unidade de transformada inversa 344. O codificador de vídeo 350 também inclui um filtro de desbloqueio 347 e uma unidade de filtro adaptativa 349. O codificador de vídeo 350 também inclui uma unidade de codificação por entropia 346. A unidade de filtro 349 do codificador de vídeo 350 pode realizar as operações de filtragem e também pode incluir uma unidade de seleção de filtro (FSU) 353 para identificação de um filtro ou conjunto de filtros desejável ou preferido a serem utilizados para decodificação.
A unidade de filtro 349 também pode gerar informação de filtro identificando os filtros selecionados de modo que os filtros selecionados ' possam ser efetivamente comunicados como informação de filtro para outro dispositivo a ser utilizado durante uma ' operação de decodificação.
Durante o processo de codificação, o codificador de vídeo 350 recebe um bloco de vídeo, tal como uma LCU, à ser codificado, e módulo de predição 332 realiza as técnicas de codificação de predição no bloco de vídeo.
Utilizando-se o esquema de particionamento em árvore quaternária discutido acima, o módulo de predição 332 pode dividir o bloco de vídeo e realiza as técnicas de codificação de predição nas CUs de tamanhos diferentes.
Para a intercodificação, o módulo de predição 332 compara Oo bloco de vídeo a ser codificado, incluindo os sub-blocos do bloco de vídeo, com vários blocos sem um ou mais quadros ou fatias de referência de vídeo a fim de definir um bloco de predição Para a intracodificação, o módulo de predição 332 gera um bloco de predição com base em dados vizinhos dentro
' 39/104 predição e o somador 348 subtrai o bloco de predição do bloco de vídeo sendo codificado a fim de gerar um bloco residual.
Para a intercodificação, o módulo de predição 332 pode compreender unidades de estimativa de movimento e compensação de movimento que identificam um vetor de movimento que aponta para um bloco de predição e gera Oo bloco de predição com base no vetor de movimento. Tipicamente, a estimativa de movimento é considerada o processo de geração de vetor de movimento, que estima o movimento. Por exemplo, o vetor de movimento pode indicar o deslocamento de um bloco de predição dentro de um quadro de predição com relação ao bloco atual sendo codificado dentro do quadro atual. A compensação de movimento é tipicamente considerada o processo de coleta ou geração de bloco de . predição com base no vetor de movimento determinado pela estimativa de movimento. Para a intracodificação, o módulo : de predição 332 gera um bloco de predição com base nos dados vizinhos dentro da mesma CU. Um ou mais modos de intrapredição podem definir como um bloco de intrapredição pode ser definido.
Depois que o módulo de predição 332 envia o bloco de predição e o somador 348 subtrai o bloco de predição do bloco de vídeo sendo codificado a fim de gerar um bloco residual, a unidade de transformada 338 aplica uma transformada de bloco residual. A transformada pode compreender uma transformada discreta de cosseno (DCT) ou uma transformada conceitualmente similar tal como a definida por um padrão de codificação tal como o padrão HEVC de transformada de ondas curtas, transformadas de inteiro, transformadas de sub-banda ou outros tipos de transformadas podem ser utilizadas também. Em qualquer
' 40/104 . ; de bloco residual, produzindo um bloco de coeficientes de transformada residuais. A transformada pode converter a informação residual de um domínio de pixel em um domínio de frequência.
A unidade de quantização 340 então quantiza OS coeficientes de transformada residual para reduzir ainda mais a taxa de bit. A unidade de quantização 340, por exemplo, pode limitar o número de bits utilizados para codificar cada um dos coeficientes. Depois da quantização, a unidade de codificação por entropia 346 varre o bloco de coeficiente quantizado a partir de uma representação bidimensional para um ou mais vetores unidimensionais serializados. A ordem de varredura pode ser pré-programada para ocorrer em uma ordem definida (tal como varredura em ziguezague, varredura horizontal, varredura vertical, , combinações e outra ordem pré-definida), ou possivelmente adaptativa “definida com base nas estatísticas de ' codificação anteriores. Seguindo esse processo de varredura, a unidade de codificação por entropia 346 codifica os coeficientes de transformada quantizados (juntamente com quaisquer elementos de sintaxe) de acordo com uma metodologia de codificação por entropia, tal como CAVLC ou CABAC, para comprimir adicionalmente os dados. Os elementos de sintaxe incluídos no fluxo de bits codificado por entropia podem incluir sintaxe de predição a partir do módulo de predição 332, tal como vetores de movimento para a intercodificação ou modos de predição para intracodificação. Os elementos de sintaxe incluídos no fluxo de bits codificado por entropia podem incluir também formação de filtro da unidade de filtro 349, que podem ser codificados da forma descrita aqui.
' 41/104
CAVLC é um tipo de técnica de codificação por entropia suportada por ITU H.264/MPEG4, padrão AVC, que pode ser aplicado em uma base vetorizada pela unidade de codificação por entropia 346. CAVLC utiliza tabelas de codificação de comprimento variável (VLC) de uma forma que comprime efetivamente as "corridas" serializadas dos coeficientes de transformada e/ou elementos de sintaxe.
CABAC é outro tipo de técnica de codificação por entropia suportada pelo padrão AVC ITU H. 264/MPEG4 que pode ser aplicada em uma base vetorizada pela unidade de codificação por entropia 346. CABAC envolve vários estágios, incluindo binarização, seleção de modelo de contexto, e codificação aritmética binária.
Nesse caso, a unidade de codificação por entropia 346 codifica os coeficientes de transformada e elementos de sintaxe de acordo com CABAC.
Como o padrão AVC * ITU H.264/MPEGA, O padrão HEVC emergente também pode suportar ambas a codificação por entropia CAVLC e CABAC. ' Adicionalmente, muitos outros tipos de técnicas de codificação por entropia também existem, e novas técnicas de codificação por entropia provavelmente emergirão no futuro.
Essa descrição não está limitada a qualquer técnica de codificação por entropia específica.
Seguindo a codificação por entropia pela unidade de codificação por entropia 346, o vídeo codificado pode ser transmitido para outro dispositivo ou arquivado para transmissão ou recuperação posterior.
Novamente, o vídeo codificado pode compreender vetores codificados por entropia e várias sintaxes, que podem ser utilizadas pelo decodificador para configurar adequadamente o processo de decodificação.
A unidade de quantização inversa 342 e a unidade de transformada inversa 344 aplicam a quantização inversa e a transformada inversa, respectivamente, para Amada do A LIANA [vas iAdes? num damínia do mioA? A camada r
' 42/104 351 adiciona o bloco residual reconstruído ao bloco de predição produzido pelo módulo de predição 332 para produzir um bloco de vídeo reconstruído pré-desbloqueado algumas vezes referido como imagem reconstruída pré- desbloqueada. O filtro de desbloqueio 347 pode aplicar filtragem ao bloco de vídeo reconstruído pré-desbloqueado para aperfeiçoar a qualidade de vídeo pela remoção de bloqueio ou outros artefatos. A saída do filtro de desbloqueio 347 pode ser referida como um bloco de vídeo pós-desbloqueado, bloco de vídeo reconstruído, ou imagem reconstruída.
A unidade de filtro 349 pode ser configurada para receber uma entrada única ou múltiplas entradas No exemplo da figura 3, a unidade de filtro 349 recebe como entrada a imagem reconstruída pós-desbloqueada (RI), imagem º reconstruída pré-desbloqueada (pRI), imagem de predição (PI) e bloco residual reconstruído (EI). A unidade de ' filtro 349 pode utilizar qualquer uma dessas entradas individualmente ou em combinação para produzir uma imagem reconstruída para armazenar na memória 334. Adicionalmente, como será discutido em maiores detalhes abaixo, com base em duas ou mais métricas, a saída da unidade de filtro 348 pode ser um filtro adicional aplicado a RI. Em outro exemplo, a saída da unidade de filtro 349 pode ser um filtro adicional aplicado a pRI. Em outros exemplos, no entanto, a saída da unidade de filtro 349 pode ser baseada em múltiplas entradas. Por exemplo, a unidade de filtro 349 pode aplicar um primeiro filtro a pRI e então utilizar a versão filtrada de pRI em conjunto com as versões filtradas de EI e PI para criar uma imagem reconstruída. Em casos onde a saída da unidade de filtro 349 é o produto de um filtro adicional sendo aplicado a uma única entrada, a
' 43/104 outras entradas, mas esses filtros podem ter todos coeficientes iguais a zero. De forma similar, se a saída da unidade de filtro 349 for o produto de aplicação de três filtros a três entradas, a unidade de filtro 349 pode, de fato, aplicar um filtro à quarta entrada, mas esse filtro pode ter todos os coeficientes iguais a zero.
A unidade de filtro 349 também pode ser configurada para receber uma entrada única. Por exemplo, apesar de a figura 3 ilustrar PI, EI, pRI e RI sendo entradas na unidade de filtro 349, em algumas implementações RI pode ser a única entrada recebida pela unidade de filtro 349. Em tal implementação, a unidade de filtro 349 pode aplicar um filtro a RI de modo que a versão filtrada de RI seja mais similar à imagem original do que à versão não filtrada de RI. Em outras implementações, a - unidade de filtro 349 e o filtro de desbloqueio 347 podem ser combinados em uma única unidade de filtragem que aplica ' filtragen e pRI. As técnicas dessa descrição, que geralmente se referem a mapeamento de filtro com base em múltiplas métricas, são compatíveis com ambos os esquemas de filtragem de entrada única e múltiplas entradas que utilizam múltiplos filtros.
A filtragen pela unidade de filtro 349 pode aperfeiçoar a compressão pela geração de blocos de vídeo de predição que combinam mais de perto com os blocos de vídeo sendo codificados do que os blocos de vídeo de predição não filtrados. Depois da filtragem, o bloco de vídeo reconstruído pode ser utilizado pelo módulo de predição 332 como um bloco de referência para intercodificar um bloco em um quadro de vídeo subsequente ou outra CU. Apesar de a unidade de filtro 349 ser ilustrada "em loop", as técnicas dessa descrição também devem ser utilizadas com pós
' 44/104 dados filtrados) seriam utilizados para fins de predição de dados em CUs subsequentes.
Para uma série de blocos de vídeo, tal como uma fatia ou quadro, a unidade de filtro 349 pode selecionar conjuntos de filtros para cada entrada de forma a promover a qualidade de vídeo.
Por exemplo, a unidade de filtro 349 pode selecionar conjuntos de filtros a partir de conjuntos predefinidos de coeficientes, ou pode definir de forma adaptativa os filtros a fim de promover a qualidade de vídeo ou compressão aperfeiçoada.
A unidade de filtro 349 pode selecionar ou definir um ou mais conjuntos de filtros para uma CU determinada de modo que os mesmos conjuntos de filtros sejam utilizados para os pixels de diferentes blocos e vídeo dessa CU.
Para um quadro em particular, fatia ou LCU, a unidade de filtro 349 pode aplicar vários . conjuntos de filtros a várias entradas, e FSU 353 pode selecionar o conjunto que produz o vídeo de melhor ] qualidade ou os níveis mais altos de compressão.
Alternativamente, FSU 353 pode sequenciar um novo filtro analisando as auto correlações e correlações cruzadas entre várias entradas e uma imagem original.
Um novo conjunto de filtros pode, por exemplo, ser determinado pela solução das equações Wienter-Hopt com base nas auto correlações e correlações cruzadas.
Independentemente de se um novo conjunto de filtros é sequenciado ou um conjunto existente de filtros é selecionado, a unidade de filtro 349 gera sintaxe para inclusão no fluxo de bits que permite que um decodificador também identifique o conjunto ou conjuntos de filtros a serem utilizados para o quadro em particular ou fatia.
De acordo com essa descrição, para cada pixel de uma CU dentro da série de blocos de vídeo, a unidade de
' 45/104 de filtros deve ser utilizado com base em duas ou mais métricas que quantificam as propriedades associadas com um ou mais conjuntos de pixels dentro da CU. Dessa forma, FSU 353 pode determinar os conjuntos de filtros para uma unidade codificada de nível mais ato tal como um quadro ou fatia, enquanto a unidade de filtro 349 determina quais filtros dos conjuntos deve ser utilizado para um pixel em particular de uma unidade codificada de nível mais baixo com base em duas ou mais métricas associadas com os pixels dessa unidade codificada de nível mais baixo.
Um conjunto de M filtros pode ser utilizado para cada entrada. Dependendo das preferências de projeto, M pode, por exemplo, ser tão pouco quanto 2 ou tão grande quanto 16, ou até maior. Um grande número de filtros por entrada pode aperfeiçoar a qualidade de vídeo, mas também . pode aumentar o overhead associado com a sinalização de conjuntos de filtros do codificador para o decodificador. O ' conjunto de M filtros pode ser determinado por FSU 353 como descrito acima e sinalizado para o decodificador para cada quadro ou fatia. Um mapa de segmentação pode ser utilizado para indicar como uma CU é segmentada e se ou não uma subunidade em particular da CU deve ser filtrada. O mapa de segmentação pode, por exemplo, incluir para uma CU um conjunto de indicadores divididos como descrito acima além de sinalização de bit adicional no caso de cada sub-CU ser filtrada. Para cada entrada associada com um pixel de uma CU que deve ser filtrada, um filtro específico a partir do conjunto de filtros pode ser escolhido com base em duas ou mais métricas. As combinações dos valores para duas ou mais métricas podem ser indexadas para filtros particulares a partir do conjunto de M filtros. A figura 4A é um diagrama conceitual ilustrando
' 46/104 filtros a partir de um conjunto de filtros.
O exemplo particular da figura 4A ilustra oito filtros (isso é, filtro 1, filtro 2,.., filtro 8), mas mais ou menos filtros podem ser utilizados de forma similar.
A figura 4A ilustra duas métricas que podem ser utilizadas para seleção de um filtro de acordo com as técnicas dessa descrição.
As duas métricas podem, por exemplo, quantificar as propriedades dos dados de pixel relacionados com a atividade não específica de direção (por exemplo, valor Laplaciano de soma modificada) e direção, a atividade específica de direção e detecção de borda, uma métrica de direção e uma métrica de borda, uma métrica de atividade horizontal e uma métrica de atividade vertical, ou duas outras métricas similares.
Em alguns casos, três ou mais métricas podem ser utilizadas, caso no qual o diagrama conceitual da figura 4A . incluiria uma terceira dimensão para o mapeamento de faixas das métricas para filtros a partir do conjunto de filtros. ' No exemplo da figura 4A, uma primeira métrica (Métrica 1) possui quatro faixas (Faixas 1-1, 1-2, 1-3 e 1- 4) e uma segunda métrica (Métrica 2) também possui quatro faixas (Faixas 2-1, 2-2, 2-3, 2-4). Portanto, o exemplo da figura 4A possui dezesseis combinações de faixas para Métrica 1 e Métrica 2. Como pode ser observado a partir da figura 4A, no entanto, cada combinação não é necessariamente associada com um filtro único.
A combinação de Faixa 1-1 e Faixa 2-1 além das combinações 1-1 e 2-2, e 1-1 e 2-3, por exemplo, são todas mapeadas ao Filtro 1, no exemplo da figura 4A.
O filtro 4, em contraste, é apenas mapeado para uma combinação (1-1 e 2-4). Apesar das faixas da figura 4A serem ilustradas como sendo relativamente iguais, os tamanhos das faixas podem variar.
Por exemplo,
em algumas implementações, a Faixa 1-1 pode englobar uma
. 47/104 apesar de a figura 4A. ilustrar a Métrica 1 e a Métrica 2 como possuindo o mesmo número de faixas, O número de faixas para uma primeira métrica e O número de faixas para uma segunda métrica não precisam necessariamente ser iguais. Se, por exemplo, a Métrica 1 for uma métrica de variação e a Métrica 2 for uma métrica de direção, a Métrica 1 pode utilizar oito faixas enquanto a Métrica 2 utiliza três faixas.
Em alguns exemplos, as faixas da Métrica 1 e da Métrica 2 podem representar um espectro contínuo de valores. Por exemplo, se a Métrica 1 for um valor Laplaciano de soma modificada, a Faixa 1-2 pode corresponder a mais atividade do que a Faixa 1-3. Dentro de uma faia, a quantidade de atividade determinada para um pixel em particular ou grupo de pixels pode aumentar de . forma similar ao longo do eixo da Métrica l. Em outros exemplos, as faixas da Métrica 1 e da Métrica 2 podem não ' representar as faixas reais, mas, ao invés disso, podem representar determinações discretas. Por exemplo, se a Métrica 2 for uma métrica de direção, a Faixa 1-1 pode corresponder a uma determinação de não direção, a Faixa 2-2 pode corresponder a uma determinação de direção horizontal, a Faixa 2-3 pode corresponder a uma determinação da direção vertical, e a Faixa 2-4 pode representar uma determinação da direção diagonal. Como será descrito em maiores detalhes abaixo, nenhuma direção, direção horizontal, direção vertical e direção diagonal podem ser determinações discretas, e, dessa forma, as faixas para a Métrica 2 podem não representar um espectro contínuo de valores da mesma forma que as faixas de Métrica 1. A figura 4B é um diagrama conceitual ilustrando as faixas de valores para uma métrica de atividade e uma A RN AA EA a.
' 48/104 direção inclui três determinações discretas (Nenhuma direção, Horizontal e Vertical). As técnicas para determinação de nenhuma direção, horizontal e vertical além das técnicas para determinação de atividade serão explicadas em maiores detalhes abaixo.
O exemplo particular da figura 4B ilustra seis filtros (isso é, Filtro 1, Filtro 2,...,Filtro 6), mas mais ou menos filtros podem ser utilizados de forma similar.
Como pode ser observado pela figura 4B, as duas métricas (atividade e direção) criam 15 combinações, identificadas como combinações 421 a 435. Em alguns casos, no entanto, as combinações adicionais não explicitamente ilustradas na figura 4B também podem ser utilizadas.
Por exemplo, uma combinação correspondente a nenhuma atividade pode ser a l6a. combinação que também possui um filtro correspondente. ' A unidade de filtro 349 pode armazenar um mapeamento de filtros para combinações de faixas de duas ou : mais métricas, tal como os mapeamentos ilustrativos das figuras 4A e 4B, e utilizar o mapeamento para determinar qual filtro a partir de um conjunto de filtros aplicar a um pixel ou grupo de pixels em particular em uma CU.
O mapeamento de filtros para combinações de faixas de duas ou mais métricas pode, por exemplo, ser determinado pela unidade de filtro 349 como parte do processo de seleção de filtro descrito acima.
Independentemente de como O mapeamento é determinado, a unidade de filtro 349 pode gerar informação permitindo que um decodificador reconstrua o mapeamento.
Essa informação pode ser incluída no fluxo de bits codificado para sinalizar o mapeamento de combinações de faixas para filtros.
O mapeamento das combinações para faixas, sinalizado por mapear combinações de faixa para identificações de filtro IDs.
Os coeficientes reais para um filtro qem nartioanlar nrodeoem cer cinalivadeoes eonnaradamente.
' 49/104 A fim de se gerar essa informação, a unidade de filtro 349 primeiro determina uma ordem de transmissão para as combinações. A ordem de transmissão geralmente se refere à ordem na qual os filtros serão sinalizados para combinações de faixas. Utilizando a figura 4A como um exemplo, a unidade de filtro 349 pode utilizar uma ordem de transmissão da esquerda para a direita e de cima para abaixo onde o filtro para a combinação 401 é sinalizado primeiro, o filtro para a combinação 402 é sinalizado em segundo lugar, e as combinações restantes são sinalizadas na ordem de 403 => 404 => 405 => 406 => 407 => 408 => 409 => 410 => 411 => 412 => 413 => 414 => 415 => 416. A unidade de filtro 349 também pode utilizar uma ordem de transmissão de cima para baixo em ziguezague onde os filtros para combinações são sinalizados na ordem de 401 => 402 => 403 . => 404 => 405 => 406 => 407 => 408 => 409 => 410 => 411 => 412 => 416 => 415 => 414 => 413. A unidade de filtro 349 ] também pode utilizar uma ordem de transmissão de cima para baixo da esquerda para a direita onde os filtros para
20. combinações são sinalizados na ordem de 401 => 405 => 409 : => 413 => 402 => 406 => 410 => 414 => 403 => 407 => 411 => 415 => 404 => 408 => 412 => 416. A unidade de filtro 349 também pode utilizar uma ordem de transmissão da esquerda para a direita em ziguezague onde os filtros para combinações são sinalizados na ordem de 401 => 405 => 409 => 413 => 414 => 410 => 406 => 402 => 403 => 407 => 411 => 415 => 416 => 412 => 408 => 404. Com referência à figura 4B, a unidade de filtro 349 pode utilizar uma ordem de transmissão da esquerda para a direita e de baixo para cima de modo que à ordem de transmissão seja 421 => 422 => 423 => 424 => 425 => 426 => 427 => 428 => 429 => 430 => 431 => 432 => 433 => 434 => 435. Como pode ser imaginado, existem
' 50/104 apenas poucas dentre muitas ordens de transmissão que são possíveis.
De acordo com uma técnica dessa descrição, a unidade de filtro 349 pode utilizar uma série de palavras código para sinalizar o mapeamento para um decodificador. Por exemplo, a unidade de filtro 349 pode gerar uma primeira palavra código para indicar se uma combinação atual sendo decodificada mapeia o mesmo filtro que a combinação decodificada mais recentemente que compartilha a mesma faixa para a primeira métrica. Se uma combinação atual sendo decodificada mapear o mesmo filtro que a combinação decodificada mais recentemente que compartilha a mesma faixa para a.segunda métrica, então a unidade de filtro 349 pode gerar uma segunda palavra código ao invés da primeira palavra código. Se uma combinação atual sendo . decodificada não mapear o mesmo filtro que qualquer uma das combinações “decodificadas mais recentemente, então a ' unidade de filtro 349 pode gerar uma terceira palavra código ao invés da primeira palavra código ou a segunda palavra código, que indica o filtro correspondente à combinação atual sendo decodificada. A primeira e segunda palavras código do exemplo atual podem ser relativamente curtas em comparação com a terceira palavra código. Por exemplo, a primeira palavra código e a segunda palavra código pode, cada uma, ser dois bits (por exemplo, 00 e 01, respectivamente), enquanto a terceira palavra código é mais bits (um primeiro bit de 1, mais bits adicionais). Nesse contexto em particular, uma combinação atual sendo decodificada ou uma combinação anterior sendo decodificada se refere à parte dos processos de codificação e decodificação onde o mapeamento dos filtros para combinações de faixa está sendo sinalizado por um ADA sd AD e A ANNA AIAIiAAAo NEL
" 51/104 necessariamente para uma transmissão ou decodificação da combinação propriamente dita.
Exemplos das técnicas descritas acima serão fornecidos agora com referência à figura 4A e ordem de transmissão de cima para baixo e da esquerda para a direita.
Se, por exemplo, a combinação 407 na combinação sendo atualmente decodificada, então a combinação 406 é a combinação decodificada mais recentemente que compartilha a mesma faixa para a Métrica 1, e a combinação 403 é a combinação decodificada mais recentemente que compartilha a mesma faixa para a Métrica 2. Se a combinação 407 mapear o mesmo filtro (filtro 7 na figura 4A) que a combinação decodificada mais recentemente que compartilha a mesma faixa para uma segunda métrica (isso é, Faixa 2-3 para Métrica 2), então a unidade de filtro 349 pode transmitir * uma segunda palavra código (por exemplo, 01) para indicar que a combinação atual sendo decodificada (combinação 407) Í mapeia o mesmo filtro que a combinação decodificada mais recentemente que compartilha a mesma faixa que uma segunda métrica (combinação 403). Se, por exemplo, a combinação 410 for a combinação atual sendo decodificada, então a combinação 409 é a combinação decodificada mais recentemente que compartilha a mesma faixa para a Métrica 1, e a combinação 406 é a combinação decodificada mais recentemente que compartilha a mesma faixa para a Métrica 2. Se a combinação 410 mapear o mesmo filtro (Filtro 2 na figura 4A) que a combinação decodificada mais recentemente que compartilha a mesma faixa para uma primeira métrica (isso é, Faixa 1-2 para a Métrica 1), então a unidade de filtro 349 pode transmitir uma primeira palavra código (por exemplo, 00) para indicar que a combinação atual sendo decodificada fLmmmm bin AHEA AIAs mensais (mà masmA filho f/MDÍITLEA 33% ANA ss
' 52/104 combinação decodificada mais recentemente que compartilha a mesma faixa para uma primeira métrica (combinação 409). Se, por exemplo, a combinação 411 for a combinação atual sendo decodificada, então a combinação 410 é a combinação decodificada mais recentemente que compartilha a mesma faixa para a Métrica 1, e a combinação 407 a combinação decodificada mais recentemente que compartilha a mesma faixa para a Métrica 2. Se a combinação 411 não mapear o mesmo filtro que qualquer uma dentre a combinação 410 ou combinação 407, então a unidade de filtro 349 pode transmitir uma terceira palavra código (por exemplo, 1 + bits adicionais) para indicar que a combinação atual sendo decodificada (combinação 411) mapeia um filtro diferente (Filtro 3) que ambas a combinação decodificada mais recentemente que compartilha a mesma faixa para a ' Métrica 1 e a combinação decodificada mais recentemente que compartilha a mesma faixa para à Métrica 2. ' Para essas combinações atuais onde uma combinação que compartilha a mesma faixa para a Métrica 1 ou uma combinação que compartilha a mesma faixa para a Métrica 2 ainda não foi decodificada, então essas opções podem ser consideradas indisponíveis ou podem ser substituídas por uma combinação diferente.
Se, por exemplo, a combinação 409 for a combinação atual a ser decodificada, então a combinação 405 é a combinação mais recentemente decodificada que compartilha a mesma faixa para a Métrica 2, mas nenhuma combinação que compartilha uma faixa para a Métrica 1 ainda foi decodificada.
Em tais caos, a combinação decodificada mais recentemente que compartilha uma faixa para a Métrica 1 pode ser considerada como não mapeando o mesmo filtro que a combinação atual sendo decodificada.
Dessa forma, nesse caso, a primeira palavra NO O O AA EA AMA Zz ad di TI ins IA MA = AA EIN AHÃA Ano
] 53/104
Alternativamente, a combinação que compartilha uma faixa para a Métrica 1 pode ser substituída por outra combinação, tal como uma combinação decodificada mais recentemente ou uma combinação decodificada previamente diferente.
Em tal caso, a combinação decodificada mais recentemente antes da combinação 409 será a combinação 408. Dessa forma, se a combinação 408 mapear o mesmo filtro que a combinação 409, então a unidade de filtro 349 pode gerar a primeira palavra código.
Técnicas análogas podem ser utilizadas para essas combinações onde uma combinação anterior compartilhando faixa comum para a Métrica 1 ainda não foram decodificadas.
Para a primeira combinação em uma ordem de transmissão (por exemplo, combinação 401 no exemplo da figura 4A), onde nenhuma combinação que compartilha a mesma faixa para Métrica 1 nem uma combinação que compartilha a * mesma faia para a Métrica 2 foram decodificadas, a unidade de filtro 349 pode gerar uma palavra código indicando o ' filtro que mapeia a primeira combinação.
O filtro pode, por exemplo, ser sinalizado utilizando a terceira palavra código ou pode ser sinalizado utilizando uma técnica diferente, caso no qual as técnicas descritas nessa descrição podem começar com a segunda combinação em uma ordem de transmissão ou uma combinação posterior.
De acordo com outra técnica dessa descrição, a unidade de filtro 349 pode utilizar uma série de palavras código para sinalizar o mapeamento para um decodificador.
Em algumas implementações, a unidade de filtro 349 pode gerar uma primeira palavra código para indicar se uma combinação atual sendo decodificada mapeia o mesmo filtro que a combinação decodificada mais recentemente que compartilha a mesma faixa para a primeira métrica.
Se uma combinação atual sendo decodificada não mapear o mesmo
' 54/104 compartilha essa faixa para a primeira métrica, então a unidade de filtro 349 pode gerar uma segunda palavra código, ao invés da primeira palavra código, que indica o filtro que mapeia a combinação atual sendo decodificada. Nesse exemplo, a primeira palavra código pode ser relativamente curta em comparação com a segunda palavra código. por exemplo, a primeira palavra código pode ser de um bit (por exemplo, 0), enquanto a segunda palavra código é de mais bits (por exemplo, um bit igual a 1, mais bits adicionais). Diferentemente da técnica anterior onde uma palavra código curta pode ser gerada se uma combinação atual mapear o mesmo filtro que uma combinação decodificada anteriormente que compartilha a mesma faixa para qualquer Métrica 1 ou Métrica 2, essa técnica inclui apenas a geração de uma palavra código curta se a combinação atual . mapear o mesmo filtro que a combinação decodificada anteriormente que compartilha a mesma faixa que a Métrica ' 1. Dessa forma, mesmo se a combinação atual mapear o mesmo filtro que uma combinação decodificada anteriormente que compartilha a mesma faixa para a Métrica 2, a unidade de filtro 349 ainda gera uma segunda palavra código (por exemplo, 1 + bits adicionais). Apesar de essa descrição estar utilizando a Métrica 1 para fins de explicação, as mesmas técnicas também podem ser aplicadas utilizando-se apenas à Métrica 2.
De acordo com outra técnica dessa descrição, a unidade de filtro 349 pode utilizar uma série diferente de palavras código para sinalizar o mapeamento para um decodificador. Por exemplo, a unidade de filtro 340 pode gerar uma primeira palavra código para indicar se uma combinação atual sendo decodificada mapeia o mesmo filtro que a combinação decodificada mais recentemente,
' 55/104 comum com a combinação decodificada anteriormente. Se a combinação atual sendo decodificada não mapear o mesmo filtro que a combinação decodificada mais recentemente, então a unidade de filtro 349 pode gerar uma segunda palavra código identificando o filtro que mapeia a combinação atual. Nessa implementação em particular, a primeira palavra código pode ser relativamente curta em comparação com a segunda palavra código. Por exemplo, a primeira palavra código pode ser de um bit (por exemplo, 0) enquanto a segunda palavra código é de mais bits (por exemplo, um primeiro bit igual a 1, mais bits adicionais).
Novamente, utilizando-se o exemplo da figura 4A e uma ordem de transmissão de cima para baixo e da esquerda para a direita, a combinação 401 seria a combinação decodificada mais recentemente se a combinação 402 estiver . sendo atualmente decodificada, a combinação 402 seria a combinação decodificada mais recentemente se a combinação ' 403 for a combinação atual, e assim por diante. 404 seria a combinação decodificada mais recentemente se a combinação 405 for a combinação atual sendo decodificada. Dessa forma, a unidade de filtro 349 pode gerar a primeira palavra código se a combinação 402 mapear o mesmo filtro que a combinação 401, se a combinação 403 mapear o mesmo filtro que a combinação 402, etc. Do contrário, a unidade de filtro 349 pode gerar a segunda palavra código identificando o filtro que mapeia a combinação atual.
De acordo com outra técnica dessa descrição, a unidade de filtro 349 pode utilizar duas palavras código para sinalizar oO mapeamento dos filtros para as combinações. Uma primeira palavra código, tal como "0" pode ser utilizada para sinalizar que uma combinação atual utiliza o mesmo filtro que uma combinação anterior. Uma
' 56/104 para sinalizar que uma combinação atual possui um filtro diferente da combinação anterior. A segunda palavra código, no entanto, não precisa identificar um novo filtro. Ao invés disso, o novo filtro pode ser determinado com base na ordem de transmissão para as classes e a ordem na qual os coeficientes de filtro são transmitidos. Utilizando-se a ordem de transmissão da esquerda para à direita e de baixo para cima descrita acima para a figura 4B como um exemplo, as palavras código podem ser transmitidas de acordo: 421(0) => 422(0) => 423(1) => 424(0) => 425(0) => 426(0) => 427(0) => 428(1) => 429(0) => 430(0) => 431(0) => 432(1) => 433(0) => 434(0) => 435(0), com o número em parênteses representando a palavra código para essa combinação. Nesse exemplo, as combinações 421-422 seriam mapeadas para um primeiro filtro, combinações 423-427 para um segundo e filtro, combinações 428-43l1l para um terceiro filtro e combinações 432-435 para um quarto filtro. Os coeficientes ' para o primeiro filtro, segundo filtro, terceiro filtro, e quarto filtro podem corresponder à ordem na qual oS conjuntos de coeficientes de filtro são sinalizados, onde o primeiro conjunto de coeficientes de filtro sinalizado corresponde ao primeiro filtro, o segundo conjunto de coeficientes de filtro sinalizados corresponde ao segundo filtro e assim por diante. A determinação de uma ordem para a transmissão de conjuntos de coeficientes de filtro é discutida em maiores detalhes abaixo.
As várias técnicas descritas nessa descrição para sinalização de um mapeamento de filtros para combinações de faixas não são alternativas mutuamente exclusivas, mas ao invés disso, podem ser utilizadas em conjunto uma com a outra. Por exemplo, em algumas implementações, determinadas combinações “podem ser sinalizadas utilizando-se uma
: 57/104 sinalizadas utilizando uma segunda técnica.
Como um exemplo, onde uma dentre uma combinação que compartilha a mesma faixa para a Métrica 1 ou uma combinação que compartilha a mesma faixa para Métrica 2 ainda não foram decodificadas (por exemplo, combinações 402, 404, 505, 405, 409 e 413), então a unidade de filtro 349 pode utilizar uma primeira técnica.
Onde ambas uma combinação que compartilha a mesma faixa para a Métrica 1 e uma combinação que compartilha a mesma faixa para a Métrica 2 foram decodificadas (por exemplo, as combinações 406, 407, 408, 410, 411, 412, 414, 415 e 416), então uma segunda técnica pode ser utilizada.
Adicionalmente, as palavras código utilizadas para qualquer uma das primeira, segunda e terceira palavras código descritas acima podem ser qualquer uma dentre palavras código de comprimento fixo, palavras ' código de comprimento variável, ou palavras código de comprimento variável adaptativas de contexto. : Em adição à geração de informação permitindo que um decodificador reconstrua o mapeamento de filtros para combinações de faixas, a unidade de filtro 349 também gera informação permitindo que um decodificador reconstrua os filtros eles mesmos.
A reconstrução de filtros inclui a reconstrução de coeficientes de filtro dos filtros.
Como será descrito em maiores detalhes abaixo, a unidade de filtro 349 pode utilizar técnicas de codificação diferencial para sinalizar os coeficientes de filtro.
Para utilizar a técnica de codificação diferencial, a unidade de filtro 349 determina uma ordem na qual sinalizar os conjuntos de coeficientes de filtro.
Como parte da determinação da ordem, a unidade de filtro 349 determina uma identificação de combinação (ID) que representa um valor sequencial para cada combinação de
' 58/104 combinações podem ser atribuídas as IDs de combinação que representam valores sequenciais em uma ordem da esquerda para a direita e de cima para baixo, caso no qual a combinação 401 seria atribuída ao primeiro valor sequencial, a combinação 402 seria atribuída ao segundo valor sequencial, e as combinações restantes seriam atribuídas aos valores sequências na ordem de 403 => 404 => 405 => 406 => 407 => 408 => 409 => 410 => 411 => 412 => 412 => 414 => 415 => 416. A unidade de filtro 349 também pode atribuir as IDs de combinação utilizando a ordem de cima para baixo e em ziguezague onde as combinações seriam atribuídas as IDs de combinação com valores sequenciais que estão em uma ordem de 401 => 402 => 403 => 404 => 408 => 407 => 406 => 405 => 409 => 410 => 411 => 412 => 416 => 415 => 414 => 413. A unidade de filtro 349 também pode atribuir . as IDs de combinação utilizando uma ordem de cima para baixo e da esquerda para a direita onde as combinações ' recebem IDs de combinação com valores sequenciais que estão em uma ordem de 401 => 405 => 409 => 413 => 402 => 406 => 410 => 414 => 403 => 407 => 411 => 415 => 404 => 408 => 412 => 416. A unidade de filtro 349 também pode utilizar uma ordem da esquerda par a direita e em ziguezague onde as combinações —“recebem IDs de combinação com valores sequenciais em uma ordem de 401 => 405 => 409 => 413 => 414 => 410 => 406 => 402 => 403 => 407 => 411 => 415 => 416 => 412 => 408 => 404. Como pode ser imaginado, essas são apenas algumas das muitas ordens que podem ser utilizadas. Adicionalmente, qualquer uma das ordens descritas pode ser menor ou maior ou de maior para menor.
Depois que a unidade de filtro 349 determinou o mapeamento dos filtros para as combinações de faixa, a unidade de filtro 349 pode identificar os agrupamentos de md AE AA dh Lados mA REA meessdas mava A maAsmA filtra
' 59/104 Utilizando-se a figura 4A como um exemplo, os agrupamentos seriam como se segue: Grupo de Filtro 1: combinações 413, 414 e 415 Grupo de Filtro 2: combinações 409, 410 Grupo de Filtro 3: combinações 411, 412 Grupo de Filtro 4: combinação 416 Grupo de Filtro 5: combinações 401 e 405 Grupo de Filtro 6: combinações 402 e 406 Grupo de Filtro 7: combinações 403 e 407 Grupo de Filtro 8: combinações 404 e 408. A unidade de filtro 349 pode então atribuir uma ID de grupo para cada grupo, e à ID de grupo pode representar um valor sequencial.
As IDs de grupo podem ser atribuídas aos grupos com base nos valores sequenciais associados com as combinações que compreendem o grupo.
Por . exemplo, o grupo que possui a combinação com menor valor sequencial associado com base nas IDs de combinação pode ' atribuir a ID de grupo com o menor valor sequencial.
Dos grupos restantes, o grupo restante que possui a combinação com menor valor sequencial associado pode receber a ID de grupo com o próximo valor sequencial mais baixo.
Esse processo pode ser repetido até que todos os grupos tenha recebido uma ID de grupo.
Em algumas implementações as IDs de grupo podem ser atribuídas com base nas combinações com os valores sequenciais associados mais altos ao invés dos mais baixos.
Em algumas implementações, O grupo que possui a combinação com o menor valor sequencial associado com base nas IDs de combinação, pode receber a ID de grupo com o valor sequencial mais alto, ou vice-versa.
Novamente, utilizando-se a figura 4A como um exemplo, e assumindo-se que as combinações 401-416 recebem IDs de combinação com valores sequenciais em uma ordem da AI MAE = alive A ALA ms Im ai MAS Lea ldoa A m
. 60/104 unidade de filtro 349 pode atribuir IDs de grupo para os grupos de filtro, como ilustrado abaixo na Tabela 1. Nome de grupo Combinações | Combinação com |ID de grupo no grupo menor valor sequencial Grupo de Filtro 1 413, 414, 415/aã3ã — q “o Grupo de Filtro 2 109, 410 oo WB Grupo de Filtro 3 |411, 412 jarro Grupo de Filero 4 [416 ane fe Grupo de Filtro 5 401, 405 Grupo de Filtro 6 402, 406 Grupo de Filtro 7 (403, 407 Grupo de Filtro 8 |404, 408 oa No exemplo da figura 4A, ilustrado na Tabela 1, a unidade de filtro 349 atribuí ao Grupo de Filtro 5 a ID de grupo com o menor valor sequencial visto que o Grupo de Filtro 5 inclui a combinação de faixa com o menor valor sequencial (isso é, a combinação 401). A unidade de filtro 349 atribuí ao Grupo de Filtro 6 a ID de grupo com O ' segundo menor valor sequencial visto que, dos grupos de ' 10 filtro restantes (isso é, todos os grupos excluindo o Grupo de Filtro 5), o Grupo de Filtro 6 inclui a combinação de faixa com o segundo valor sequencial mais baixo (isso é, a combinação 402). A unidade de filtro 349 atribuí ao Grupo de Filtro 7 a ID de grupo com o terceiro valor sequencial mais baixo visto que, dos grupos de filtro restantes (isso é, todos os grupos de filtro excluindo o Grupo de Filtro 5 e o Grupo de Filtro 6), o Grupo de Filtro 7 inclui a combinação de faixa com o menor valor sequencial (isso é combinação 403). A unidade de filtro 349 atribuí ao Grupo de Filtro 8 a ID de grupo com o quarto menor valor sequencial visto que, dos grupos de filtro restantes (isso é, todos os grupos de filtro excluindo os Grupos de Filtro 1 5, 6 e 7), o Grupo de Filtro 8 inclui a combinação de faixa com o quarto valor sequencial mais baixo (combinação 404). A unidade de filtro 349 atribuí ao Grupo de Filtro 2 a ID
' 61/104 de grupo com o quinto valor sequencial mais baixo visto que, dos grupos de filtro restantes (isso é, excluindo os Grupos de Filtro 5, 6, 7, e 8), o Grupo de Filtro 2 inclui a combinação de faixa com o menor valor sequencial (combinação 409). A unidade de filtro 349 atribuí ao Grupo de Filtro 3 a ID de grupo com o sexto valor sequencial mais baixo visto que, dos grupos de filtro restantes (isso é, excluindo os Grupos de Filtro 5, 6, 7, 8 e 2), o Grupo de Filtro 3 inclui a combinação de faixa com o menor valor sequencial (combinação 411). A unidade de filtro 349 atribuí ao Grupo de Filtro 1 a ID de grupo com o sétimo valor sequencial mais baixo visto que, dos grupos de filtro restantes (isso é, excluindo os Grupos de Filtro 5, 6, 7, 8, 2 e 3), o Grupo de Filtro 1 inclui a combinação de faixa com o menor valor sequencial (combinação 413). Finalmente, - a unidade de filtro 349 atribuí ao grupo de Filtro 4, o grupo de filtro restante final, a ID de grupo com o maior
' valor sequencial (8, nesse exemplo em particular). Com base nas IDs de grupo de filtro, a unidade de filtro 349 determina uma ordem na qual sinalizar os coeficientes de filtro de um filtro.
Novamente, utilizando- se o exemplo da figura 4A e Tabela 1, a unidade de filtro 349 primeiro sinaliza O coeficiente para o Filtro 5, então o coeficiente para o Fíltro 6, então o coeficiente para o Filtro 7, então o coeficiente para o Filtro 8, então o coeficiente para o Filtro 2, então o coeficiente para o Filtro 3, então o coeficiente para o Filtro 1, e finalmente o coeficiente para o Filtro 4. Utilizando-se técnicas de codificação diferenciais, como descrito nessa descrição, a unidade de filtro 349 pode codificar os coeficientes para O Filtro 6 como informação de diferença com relação aos coeficientes de filtro do Filtro 5, codificar os AS finiantaco nara À RWilbtro 7 qnmo jsnfearmanão de diferenca
' 62/104 com relação aos coeficientes de filtro para o Filtro 6, e assim por diante, com base na ordenação sequencial das IDs de grupo.
O mapeamento de duas ou mais métricas para entradas nos filtros pode ser implementado de múltiplas formas.
Por exemplo, em algumas implementações cada entrada pode ter um único conjunto de filtros, enquanto que em algumas implementações as entradas compartilham um conjunto comum de filtros.
Adicionalmente, em algumas implementações, duas ou mais métricas para cada entrada podem ser utilizadas para identificar um filtro em particular para cada entrada.
Em outras implementações, no entanto, duas ou mais métricas para uma única entrada podem ser utilizadas para identificar os filtros para todas as entradas.
Em outras implementações, duas ou mais métrica . para uma primeira entrada podem ser utilizadas para identificar um filtro para uma segunda entrada diferente. 7 De acordo com essa descrição, a unidade de filtro 349 pode realizar as técnicas de codificação com relação à informação de filtro que pode reduzir a quantidade de dados necessários para codificar e portar informação de filtro a partir do codificador 350 para outro dispositivo.
Novamente, para cada quadro ou fatia, a unidade de filtro 340 pode definir ou selecionar um ou mais conjuntos de coeficientes de filtro a serem aplicados aos pixels de CUs para esse quadro ou fatia.
A unidade de filtro 349 aplica os coeficientes de filtro na ordem para filtrar os blocos de vídeo de quadros de vídeo reconstruídos armazenados na memória 334, que podem ser utilizados para a codificação de predição consistente com à filtragem em loop.
A unidade de filtro 349 pode codificar os coeficientes de filtro como informação de filtro é enviada para a unidade de
' 63/104 codificação por entropia 346 para inclusão no fluxo de bits codificado.
Adicionalmente, as técnicas dessa descrição podem explorar o fato de alguns dos coeficientes de filtro definidos ou selecionados por FSU 353 poderem ser muito similares a outros coeficientes de filtro aplicados com relação aos pixels de CUs de outro quadro ou fatia. O mesmo tipo de filtro pode ser aplicado a diferentes quadros ou fatias (por exemplo, o mesmo suporte de filtro), mas os filtros podem ser diferentes em termos de primeiros valores de coeficiente associados com diferentes índices de suporte de filtro. De acordo, a fim de reduzir a quantidade de dados necessários para portar tais coeficientes de filtro, a unidade de filtro 349 pode codificar por predição um ou mais coeficientes de ' filtro a serem utilizados para . filtragem com base nos coeficientes de filtro de outra CU, explorando "potencialmente as similaridades entre os ' coeficientes de filtro. Em alguns casos, no entanto, pode ser mais desejável se codificar os coeficientes de filtro diretamente, por exemplo, sem utilização de qualquer predição. Várias técnicas, tal como técnicas que exploram o uso de uma métrica de atividade para definir quando codificar os coeficientes de filtro utilizando técnicas de codificação de predição e quando codificar os coeficientes de filtro diretamente sem qualquer codificação de predição, podem ser utilizados para comunicar de forma eficiente os coeficientes de filtro para um decodificador. Adicionalmente, a simetria também pode ser imposta de modo que um subconjunto de coeficientes (por exemplo, 5, -2, 10) conhecido do decodificador possa ser utilizado para definir o conjunto total de coeficientes (por exemplo, 5, -2, 10, 10, -2, 5). A simetria pode ser imposta em ambas as
' 64/104
Como descrito acima, o codificador de vídeo 350 representa um exemplo de um codificador de vídeo configurado para determinar uma primeira métrica para um grupo de pixels dentro de um bloco de pixels, determinar uma segunda métrica para um grupo de pixels, determinar um filtro com base na primeira métrica e na segunda métrica, e gerar uma imagem filtrada pela aplicação do filtro ao grupo de pixels.
O codificador de vídeo 350 também representa um exemplo de um codificador de vídeo configurado para determinar uma primeira métrica para um bloco de pixels, onde a primeira métrica é determinada com base em uma comparação de um subconjunto de pixels no bloco para outros pixels no bloco; determinar uma segunda métrica para oO bloco de pixels; determinar um filtro com base na primeira métrica e na segunda métrica; e gerar uma imagem filtrada
. pela aplicação do filtro ao bloco de pixels.
Como descrito acima, o codificador de vídeo 350 " também representa um exemplo de um codificador de vídeo configurado para determinar um mapeamento de combinações de faixa para os filtros, onde uma combinação de faixa compreende uma faixa para uma primeira métrica e uma faixa para uma segunda métrica, onde cada combinação de faixa possui uma identificação de combinação de faixa única (ID), onde cada ID de combinação de faixa única corresponde a um valor sequencial para uma combinação de faixa; atribuir a IDs de grupo únicas para grupos de combinações de faixa com base nos valores sequenciais para as combinações de faixa, onde cada ID de grupo única corresponde a um valor sequencial para um grupo; e, codificar os conjuntos de coeficientes de filtro correspondentes aos filtros com base nas IDs de grupo únicas.
O codificador de vídeo 350 pode codificar os conjuntos de coeficientes de filtro pela
' 65/104 fluxo de bits codificado em uma ordem que é selecionada com base nos valores sequenciais das IDs de grupo únicas. O codificador de vídeo 350 pode sinalizar os conjuntos de coeficientes de filtro utilizando técnicas de codificação diferencial.
Como descrito acima, o codificador de vídeo 350 também representa um exemplo de um codificador de vídeo configurado para determinar um mapeamento de combinações de faixa para filtros, onde uma combinação de faixa compreende uma faixa de valores para uma primeira métrica e uma faixa de valores para uma segunda métrica; gerar uma primeira palavra código se uma combinação de faixa atual for mapeada para o mesmo filtro como uma combinação de faixa anterior que compreende a mesma faixa de valores para a primeira métrica; gerar uma segunda palavra código se uma combinação . de faixa atual for mapeada para o mesmo filtro que uma combinação de faixa anterior que compreende a mesma faixa ' de valores para à segunda métrica e gerar uma terceira palavra código se a combinação de faixa atual for mapeada para um filtro diferente do que a combinação de faixa anterior que compreende a mesma faixa de valores para a primeira métrica e a faixa de combinação anterior que compreende à mesma faixa de valores para a segunda métrica. O codificador de vídeo 350 também representa um exemplo de um codificador de vídeo configurado para determinar um mapeamento de combinações de faixa para filtros, onde uma combinação de faixa compreende uma faixa para uma primeira métrica e uma faixa para uma segunda métrica; gerar uma primeira palavra código se uma combinação de faixa atual for mapeada para o mesmo filtro que uma combinação de faixas anterior, e, gerar uma segunda palavra código se a combinação de faias atual for mapeada para um filtro
' 66/104 segunda palavra código identifica um filtro mapeado para a combinação de faixa atual.
A figura 5 é um diagrama em bloco ilustrando um exemplo de um decodificador de vídeo 560, que decodifica uma sequência de vídeo que é codificada da forma descrita aqui.
A sequência de vídeo recebida pode compreender um conjunto codificado de quadros de imagem, um conjunto de fatias de quadro, um grupo codificado de forma comum de imagens (GOPs), ou uma ampla variedade de tipos de séries de blocos de vídeo que incluem os blocos de vídeo codificados e sintaxe para definir como decodificar tais blocos de vídeo.
O decodificador de vídeo 560 inclui uma unidade de decodificação por entropia 552, que realiza a função de decodificação alternada da codificação realizada pela . unidade de codificação por entropia 346 da figura 3. Em particular, a unidade de decodificação por entropia 552 " pode realizar a decodificação CAVLC ou CABAC ou qualquer outro tipo de decodificação por entropia utilizada pelo codificador de vídeo 350. Os blocos de vídeo decodificados por entropia em um formato serializado unidimensional podem ser varridos de forma inversa para converter um ou mais vetores unidimensionais dos coeficientes de volta em um formato de bloco bidimensional.
O número e tamanho de vetores, além da ordem de varredura definida para os blocos de vídeo podem definir como o bloco bidimensional é reconstruído.
A sintaxe de predição decodificada por entropia pode ser enviada a partir da unidade de decodificação por entropia 552 para o módulo de predição 554, e a informação de filtro decodificada por entropia pode ser enviada a partir da unidade de decodificação por entropia 552 para a unidade de filtro 559.
: 67/104 O decodificador de vídeo 560 também inclui um módulo de predição 554, unidade de quantização inversa 556, uma unidade de transformada inversa 558, uma memória e um somador 564. Adicionalmente, o decodificador de vídeo 560 também inclui um filtro de desbloqueio 557 que filtra a saída do somador 564. Consistente com essa descrição, a unidade de filtro 559 pode receber informação de filtro decodificada por entropia que inclui um ou mais fíltros a serem aplicados a uma ou mais entradas. Apesar de não ilustrado na figura 5, o fíltro de desbloqueio 557 também pode receber informação de filtro decodificada por entropia que inclui um ou mais filtros a serem aplicados.
Os filtros aplicados pela unidade de filtro 559 podem ser definidos pelos conjuntos de coeficientes de 15) filtro. A unidade de filtro 559 pode ser configurada para . gerar os conjuntos de coeficientes de filtro com base na informação de filtro recebida da unidade de decodificação ' por entropia 552. A informação de filtro pode incluir a sintaxe de descrição de filtro que identifica um número máximo de filtros em um conjunto de filtros e/ou um formato de filtros em um conjunto de filtros, por exemplo, A sintaxe de descrição de filtro pode ser incluída em um cabeçalho de uma série de blocos de vídeo, por exemplo, um cabeçalho LCU, um cabeçalho de quadro, um cabeçalho de fatia, um cabeçalho GOP, um cabeçalho de sequência, Ou similares. Em outros exemplos, a sintaxe de descrição de filtro pode ser incluída em um rodapé ou outra estrutura de dados. Com base na sintaxe de descrição de filtro, a unidade de filtro 559 pode reconstruir o conjunto de filtros utilizados no codificador. A informação de filtro também pode incluir a sintaxe de sinalização adicional que sinaliza para O
" 68/104 , qualquer conjunto determinado de coeficientes. Em algumas implementações, a informação de filtro pode, por exemplo, incluir também faixas para duas ou mais métrica para as quais qualquer conjunto determinado de coeficientes deve ser utilizado. Depois da decodificação de filtros, a unidade de filtro 559 pode filtrar os valores de pixel dos blocos de vídeo decodificados com base em um ou mais conjuntos de coeficientes de filtro e a sintaxe de sinalização que inclui as faixa para as quais os diferentes conjuntos de coeficientes de filtro devem ser utilizados.
A unidade de filtro 559 pode receber no fluxo de bits um ou mais elementos de sintaxe indicando um conjunto de filtros para cada quadro ou fatia além de um mapeamento de filtros para as duas ou mais métricas. Por exemplo, se um codificador utilizar Oo mapeamento de faixas para as . métricas para os filtros ilustrados na figura 4A, então o codificador sinalizará esse mapeamento ou transmitirá os ] dados para permitir que a unidade de filtro 559 reconstrua esse mapeamento. Independentemente de se ou não esse mapeamento é explicitamente sinalizado, a unidade de filtro 559 pode manter o mesmo mapeamento de filtros para combinações de faixas como utilizado pelo codificador.
Como mencionado acima, a unidade de filtro 559 gera um mapeamento com base na informação de filtro | 25 sinalizada no fluxo de bits. Com base nesse mapeamento, a unidade de filtro 559 pode determinar os grupos e atribuír IDs de grupo para os grupos da mesma forma descrita acima com relação à unidade de filtro 349. Utilizando-se essas IDs de grupo, à unidade de filtro 559 pode associar os coeficientes de filtro recebidos com...
Para cada CU dentro do quadro ou fatia, a unidade de filtro 559 pode calcular uma ou mais métricas associadas E AA NH a Aa soa.
' 69/104 entradas (isso é, PI, EI, pRI, e RI) a fim de determinar quais filtros dos conjuntos se aplicam a cada entrada.
Alternativamente, a unidade de filtro 559 pode calcular uma ou mais métricas para uma única entrada, tal como pRI ou RI.
A unidade de filtro 559 determina qual filtro aplicar com base nas métricas determinadas para um pixel em particular ou grupo de pixels.
Utilizando-se um valor Laplaciano de soma modificada e direção como exemplos para a Métrica 1 e Métrica 2 e utilizando-se os mapeamentos ilustrados na figura 4A como um exemplo, se a unidade de filtro 559 determinar que um pixel ou grupo de pixels possui um valor Laplaciano de soma modificada na Faixa 1-2 e uma direção correspondente à Faixa 2-3, então a unidade de filtro 559 pode aplicar o Filtro 2 ao pixel ou grupo de pixels.
Se a unidade de filtro 559 determinar que um pixel . ou grupo de pixels possui um valor Laplaciano de soma modificada na Faixa 1-4 e uma direção correspondente à : Faixa 2-2, então a unidade de filtro 559 pode aplicar o Filtro 6 a esse pixel ou grupo de pixels, e assim por diante.
O filtro pode assumir geralmente qualquer tipo de formato ou disposição de suporte de filtro.
O suporte de filtro se refere ao formato do filtro com relação a um determinado pixel sendo filtrado, e os coeficientes de filtro podem definir ponderações aplicadas aos valores de pixel vizinhos de acordo com o suporte de filtro.
De acordo com as técnicas da presente descrição, os dados de sintaxe podem ser incluídos no fluxo de bits para sinalizar para O decodificador como os filtros foram codificados (por exemplo, como os coeficientes de filtro foram codificados), além das faixas de métrica de atividade para as quais os diferentes filtros devem ser utilizados.
Para cada CU dentro do quadro ou fatia, a unidade í 70/104 com os pixels decodificados de uma CU para múltiplas entradas (isso é, PI, EI, pRI, e RI) a fim de determinar quais filtros dos conjuntos se aplicam a qual entrada.
Alternativamente, a unidade de filtro 559 pode calcular uma ou mais métricas para uma única entrada, tal como pRI ou RI.
A unidade de filtro 559 determina qual filtro aplicar com base nas métricas determinadas para um pixel em particular ou grupo de pixels.
Utilizando-se um valor Laplaciano de soma modificada e direção como exemplos de Métrica 1 e Métrica 2 e utilizando-se os mapeamentos ilustrados na figura 4A como um exemplo, se a unidade de filtro 559 determinar que um pixel ou grupo de pixels possui um valor Laplaciano de soma modificada na Faixa 1-2 e uma direção correspondente à Faixa 2-3, então a unidade de filtro 559 pode aplicar o Filtro 2 a esse pixel ou grupo . de pixels.
Se a unidade de filtro 559 determinar que um pixel ou grupo de pixels possui um valor Laplaciano de soma : modificada na Faixa 1-4 e uma direção correspondente à Faixa 2-2, então a unidade de filtro 559 pode aplicar o Filtro 6 a esse pixel ou grupo de pixels, e assim por diante.
O filtro pode assumir geralmente qualquer tipo de formato ou disposição de suporte de filtro.
O suporte de filtro se refere ao formato do filtro com relação a um determinado pixel sendo filtrado, e os coeficientes de filtro podem definir a ponderação aplicada aos valore de pixel vizinhos de acordo com o suporte de filtro.
De acordo com as técnicas da presente descrição, os dados de sintaxe podem ser incluídos no fluxo de bits para sinalizar para Oo decodificador como os filtros foram codificados (por exemplo, como os coeficientes de filtro foram codificados), além das faixas de métrica de atividade para as quais diferentes filtros devem ser utilizados.
' 71/104 O módulo de precisão 554 recebe a sintaxe de predição (tal como vetores de movimento) da unidade de decodificação por entropia 552. Utilizando-se a sintaxe de predição, o módulo de predição 554 gera os blocos de predição que foram utilizados para codificar os blocos de vídeo.
A unidade de quantização inversa 556 realiza a quantização inversa, a unidade de transformada inversa 558 realiza as transformadas inversas para alterar Os coeficientes dos blocos de vídeo residuais de volta para o domínio de pixel.
O somador 564 combina cada bloco de predição com a saída do bloco residual correspondente pela unidade de transformada inversa 558 a fim de reconstruir o bloco de vídeo.
A unidade de filtro 559 gera os coeficientes de filtro a serem aplicados a cada entrada de uma CU, e então . aplica tais coeficientes de filtro a fim de filtrar os blocos de vídeo reconstruídos dessa CU.
A filtragem, por " exemplo, pode compreender filtragem de desbloqueio adicional que suaviza as bordas e/ou elimina artefatos associados com os blocos de vídeo, filtragem de remoção de ruído para redução de ruído de quantização, ou qualquer outro tipo de filtragem que possa aperfeiçoar a qualidade de codificação.
Os blocos de vídeo filtrados são acumulados na memória 562 a fim de reconstruir os quadros decodificados (ou outras unidades decodificáveis) da informação de vídeo.
As unidades decodificadas podem ser enviadas a partir do decodificador de vídeo 560 para apresentação para um usuário, mas também podem ser armazenada para uso em decodificação de predição subsequente.
No campo de codificação de vídeo, é comum a aplicação de filtragem no codificador e decodificador a fim
' 72/104 A filtragen pode ser aplicada através de um pós-filtro, caso no qual o quadro filtrado não é utilizado para predição de quadros futuros. Alternativamente, a filtragem pode ser aplicada "em loop", caso no qual o quadro filtrado pode ser utilizado para prever quadros futuros. Um filtro desejável pode ser projetado pela minimização de erro entre o sinal original e o sinal filtrado decodificado. Tipicamente, tal filtragem tem sido baseada na aplicação de um ou mais filtros a uma imagem reconstruída. Por exemplo, o filtro de desbloqueio pode ser aplicado a uma imagem reconstruída antes de a imagem ser armazenada na memória, ou um filtro de desbloqueio e um filtro adicional podem ser aplicados a uma imagem reconstruída antes de a imagem ser armazenada na memória.
De uma forma similar à quantização dos - coeficientes de transformada, os coeficientes do filtro h(k,1) onde k = K,...,K, e 1 = L,...L podem ser quantizados ' também. K e L podem representar valores inteiros. Os coeficientes de filtro (k,1) podem ser quantizados como: f(k,1)=round)normFact - h(k,1)) onde normFact é um fator de normalização e round é a operação de arredondamento realizada para alcançar a quantização para uma profundidade de bit desejada. A quantização dos coeficientes de filtro pode ser realizada pela unidade de filtro 349 da figura 3 durante a codificação e a desquantização ou quantização inversa pode ser realizada nos coeficientes de filtro decodificados pela unidade de filtro 559 da figura 5. O filtro h(k,1) deve representar genericamente qualquer filtro. Por exemplo, o filtro h(k,l1) pode ser aplicado a qualquer uma das múltiplas entradas. Em alguns casos as múltiplas entradas associadas com um bloco de vídeo utilizarão diferentes
" 73/104 filtros, caso no qual múltiplos filtros similares a h(k,1l) | podem ser quantizados e desquantizados como descrito acima.
Os coeficientes de filtro quantizados são codificados e enviados a partir do dispositivo de origem associado com o codificador 350 para um dispositivo de destino associado com o decodificador 560 como parte de um fluxo de bits codificado. No exemplo acima, o valor de normFact é normalmente igual a 2n apesar de outros valores poderem ser utilizados. Valores maiores de normFact resultam em uma quantização mais precisa de modo que os coeficientes de filtro quantizados f(K,1) forneçam um melhor desempenho. No entanto, valores maiores de normFact podem produzir coeficientes f(k,l1) que exigem mais bits para sinalizar para o decodificador.
No decodificador 560 os coeficientes de filtro . decodificados f(Kk,/1) podem ser aplicados à entrada adequada. Por exemplo, se os coeficientes de filtro ' decodificados forem aplicados a RI, os coeficientes de filtro podem ser aplicados à imagem reconstruída pós- desbloqueio RI(i,j) onde i=0,...M e j=0,...,N como se segue:
K L K L RIGD= > LSADRIGHA ADS D7/(kD k=-Kil=-L ka Kia As variáveis M, N, K e L podem representar inteiros. K e L podem definir um bloco de pixels que abrange duas dimensões de -K a K e de -L a L. Filtros aplicados a outras entradas podem ser aplicados de forma análoga.
As técnicas dessa descrição podem aperfeiçoar o desempenho de um pós-filtro ou filtro em loop, e também pode reduzir o número de bits necessários para sinalizar os coeficientes de filtro f(k,1). Em alguns casos, um número DA A AAA O AAA A NAZI. IICA AL
- 74/104 para o decodificador para cada série de bloco de vídeo, por exemplo, para cada quadro, fatia, parte de um quadro, grupo de quadros (GOP), ou similares.
Para cada filtro, informação adicional é incluído no fluxo de bits para identificar as CUs, macroblocos e/ou pixels para os quais um determinado filtro deve ser aplicado.
Os quadros podem ser identificados pelo número de quadro e/ou tipo de quadro (por exemplo, quadros I, quadro P ou quadro B). Quadros I se referem à intraquadros que sofrem intrapredição.
Quadros P se referem a quadros de predição que possuem blocos de vídeo previstos com base em uma lista de dados (por exemplo, um quadro anterior). Quadros B se referem a quadros de predição bidirecionais que são previstos com base em duas listas de dados (por exemplo, um quadro anterior ou subsequente). Os macroblocos . podem ser identificados pela listagem dos tipos de macroblocos e/ou faixa de valores de parâmetro de . quantização (QP) utilizados para reconstruir o macrobloco.
Os coeficientes de filtro f(k,l1) para qualquer entrada podem ser codificados utilizando-se a precisão de coeficientes sinalizados para as CUs anteriores.
Para cada entrada de uma CU m (por exemplo, cada quadro, fatia ou GOP), O codificador pode codificar e transmitir um conjunto de filtros M: gi, onde i=0,...,M-1 Para cada filtro, o fluxo de bits também deve ser codificado para identificar a combinação de faixas para duas ou mais métricas para as quais o filtro deve ser utilizado.
Os coeficientes de filtro podem ser previstos í 30 utilizando-se os coeficientes de filtro reconstruídos ; utilizados em uma CU anterior.
Os coeficientes de filtro a AA
' 75/104 f"; onde i = O,...,N-1l Nesse caso, o número de CU n pode ser utilizado para identificar um ou mais filtros utilizados para predição dos filtros atuais, e o número n pode ser enviado para o decodificador como parte do fluxo de bits codificado. Adicionalmente, a informação — pode ser codificada e transmitida para o decodificador para identificar as combinações de faixas para as duas ou mais métricas para a quais a codificação de predição é utilizada.
A amplitude dos coeficientes de filtro g(k,1) depende de valores k e l. Normalmente, o coeficiente com a maior amplitude é oO coeficiente g(0,0). Os outros coeficientes que devem ter grandes amplitudes são os coeficientes para os quais o valor de k ou 1 é igual a O.
. 15 Esse fenômeno pode ser utilizado para reduzir ainda mais a quantidade de bits necessários para sinalizar os ' coeficientes. Os valores de índice k e 1 podem definir localizações dentro de um suporte de filtro conhecido. Os coeficientes: gi(Kk,1), i=0,...,M-1 para cada quadro m podem ser codificados utilizando-se códigos de comprimento variável parametrizado tal como códigos Golomb e exp-Golomb definidos de acordo com um parâmetro p. Pela alteração do valor do parâmetro p que define os códigos de comprimento variável parametrizados, esses códigos podem ser utilizados para representar de forma eficiente a ampla faixa de distribuições de fonte. A distribuição de coeficientes g(k,1) (isso é, sua probabilidade de possuir valores grandes ou pequenos) depende dos valores de k e 1l. Dessa forma, para se aumentar a eficiência de codificação, para
] 76/104 cada par (K,l). O parâmetro p pode ser utilizado para codificação de comprimento de variável parametrizado ao se codificar coeficientes: JA(Kk,1) onde k = -K,...,K, 1 = -L,...,L Como descrito acima, o decodificador de vídeo 560 representa um exemplo de um decodificador de vídeo configurado para determinar uma primeira métrica para um grupo de pixels dentro de um bloco de pixels, determinar uma segunda métrica para o grupo de pixels, determinar um filtro com base na primeira métrica e segunda métrica, e gerar uma imagem filtrada pela aplicação do filtro para o grupo de pixels. O decodificador de vídeo 560 também representar um exemplo de um codificador de vídeo configurado para determinar uma primeira métrica para um bloco de pixels, onde a primeira métrica é determinada com ? 15 base em uma comparação de um subconjunto de pixels no bloco para outros pixels no bloco; determinar uma segunda métrica ' para o bloco de pixel; determinar um filtro com base na primeira métrica e segunda métrica; e gerar uma imagem filtrada pela aplicação do filtro ao bloco de pixels.
Como descrito acima, o decodificador de vídeo 560 também representa um exemplo de um decodificador de vídeo configurado para determinar um mapeamento das combinações de faia para os filtros, onde uma combinação de faixa compreende uma faixa para uma primeira métrica e uma faixa para uma segunda métrica, onde cada combinação de faixa possui uma identificação de combinação de faixa única (TD), onde cada ID de combinação de faixa única corresponde a um valor sequencial para uma combinação de faixa; atribuír IDsS de grupo únicas para grupos das combinações de faixa com base nos valores sequenciais para as combinações de faixa, onde cada ID de grupo única corresponde a um valor
" 77/104 coeficientes de filtro correspondendo aos filtros com base nas IDs de grupo únicas. O decodificador de vídeo 560 pode codificar os conjuntos de coeficientes e filtro pela geração e conjuntos de coeficientes de filtro com base na informação recebida em um fluxo de bits codificado. O decodificador de vídeo 560 pode gerar os conjuntos de coeficientes de filtro utilizando técnicas e codificação diferenciais.
O decodificador de vídeo 560 também representa um exemplo de um decodificador de vídeo configurado para mapear uma primeira combinação de faixa para um primeiro filtro, onde a primeira combinação de faixa compreende uma primeira faixa de valores para uma primeira métrica e uma primeira faixa de valores para uma segunda métrica; mapear uma segunda combinação de faixa para um segundo filtro, : onde a segunda combinação de faixa compreende uma segunda faixa de valores para a primeira métrica e um segunda faixa ' de valores para à segunda métrica; mapear uma combinação de faixa atual para um filtro, onde a combinação de faixa atual compreende a primeira faixa de valores da primeira métrica e uma segunda faixa de valores para a segunda métrica. O mapeamento da combinação de faixa atual para O filtro pode incluir o mapeamento da combinação de faixa atual para o primeiro filtro em resposta ao recebimento de uma primeira palavra código, onde a primeira palavra código indica que a combinação de faixa atual foi mapeada para O mesmo filtro que a primeira combinação de faixa; O mapeamento da combinação de faixa atual para o segundo filtro em resposta ao recebimento de uma segunda palavra código, onde a segunda palavra código indica que a combinação de faixa atual é mapeada para o mesmo filtro que a segunda combinação; e, o mapeamento da combinação de faiva atnhal nara nm tarceiro filtro em recnosta ao
. 78/104 recebimento de uma terceira palavra código, onde a terceira palavra código identifica esse terceiro filtro.
O decodificador de vídeo 560 também representa um exemplo de um decodificador de vídeo configurado para gerar um mapeamento de combinações de faixa para filtros, onde uma combinação de faixa compreende uma faixa para uma primeira métrica e uma faixa para uma segunda métrica; mapeia uma combinação de faixa atual para um mesmo filtro que uma combinação de faixa anterior em resposta ao recebimento de uma primeira palavra código sinalizando que a combinação de faixa atual é mapeada para o mesmo filtro que a combinação de faixa anterior; e, mapeia a combinação de faixa atual para um filtro identificado por uma segunda palavra código em resposta ao recebimento da segunda palavra código sinalizando que a combinação de faixa atual é mapeada para . um filtro diferente do da combinação de faixa anterior.
Como foi introduzido acima, vários tipos : diferentes de métricas podem ser utilizados em conjunto com as técnicas de filtragem de múltiplas métricas descritas nessa descrição.
Algumas dessas métricas são métricas de atividade que quantificam a atividade associada com um ou mais blocos de pixels dentro dos dados de vídeo.
AS métricas de atividade podem compreender métricas de variação indicativas de variação de pixel dentro de um conjunto de pixels.
Como será descrito, algumas dessas métricas de atividade são específicas de direção.
Por exemplo, a métrica de atividade horizontal quantifica a atividade ao longo de um eixo horizontal, uma métrica de atividade vertical quantifica a atividade ao longo de um eixo vertical, uma métrica de atividade diagonal quantifica a atividade ao longo de um eixo diagonal, e assim por diante.
Í 79/104 Algumas métricas de atividade não são específicas de direção.
Por exemplo, um valor Laplaciano de soma modificada é uma métrica de atividade com base em uma janela de pixels bidimensional que cercam um pixel atual ou grupo de pixels atual.
Para um pixel atual (i,j), um valor Laplaciano de soma modificada pode ser calculado como se segue: var(i, = > SPRGEJ+D= RGE j+D= RGE jello k=-K1l=-L |2RG +k, j+D—=RG+k, j+l-1)— RGE+k,j+l+D) O onde k representa um valor de uma soma de valores de pixel de -K para K e 1 representa um valor de uma soma de -L para L para uma janela bidimensional que abrange de - KakKe-LaL, onde ie 5j representam coordenadas de pixel de dados de pixel, RI (i,j) representa um valor de pixel determinado em coordenadas i e j, e var(i,j) é a métrica de . atividade (isso é, o valor Laplaciano de soma modificada). As técnicas da presente descrição também podem ser implementadas utilizando métricas específicas de direção para atividade horizontal, atividade vertical, e atividade diagonal.
AS equações 2 e 3 ilustram exemplos de como a atividade horizontal e a atividade vertical podem ser computadas para um pixel atual (x,y) pela comparação de um valor de pixel (Rec), tal como intensidade, do pixel atual com um valor de pixel de pixels vizinhos.
Hor act(x,y) = R(2*RecIx][y]-Rec[x+1][y]-Rec[x-1][y]) O Ver act(x,y) = R(2"Rec[x][y]-Rec[x][y+1]-Rec[x][y+1]) 6) Como ilustrado pela equação 2, quando determinando a atividade horizontal, o pixel atual (x,y) pode ser comparado com um vizinho esquerdo (x-l, y) e um vizinho direito (x+l1, y). Como ilustrado pela equação 3, ao se determinar a atividade vertical, o pixel atual pode ser
' 80/104 comparado com um vizinho superior (x, y+l) e um vizinho inferior (x,y-1l).
As equações 4 e 5 ilustram exemplos de como a atividade diagonal pode ser computada para um pixel atual (X*,y) pela comparação de um valor de pixel (Rec) do pixel atual com os valores de pixel dos pixels vizinhos. 45deg act(x,y) = RO*Rec[x][y]-Rec[x+1][y+1]-Rec[x-1][y-1]))" (M) 135deg act(x,y) = R(2*Rec[x][y]-Rec[x-1][y+1]-Rec[x+11[y-1)) (5) Como ilustrado pela equação 4, a atividade diagonal pode ser computada, por exemplo, na direção de 45 graus pela comparação de um pixel atual (x,y) com um vizinho superior direito (x+1, y+1) e um vizinho inferior esquerdo (x-l, y-l). Como ilustrado pela equação 5, a atividade diagonal também pode ser na direção de 135 graus pela comparação de um pixel atual (x+y) com um vizinho ? superior esquerdo (x-l, y+1) e um vizinho inferior direito (x+1, y-1).
As equações 2 a 5 acima ilustram como a atividade horizontal, a atividade vertical e a atividade diagonal podem ser determinadas pixel-a-pixel, mas em algumas implementações, a atividade horizontal, a atividade vertical e a atividade diagonal podem ser determinadas grupo-a-grupo, onde um grupo de pixels é um bloco de pixels 2x2, 4x4, Ou NXxN. Em tal implementação, a atividade horizontal, por exemplo, pode ser determinada pela comparação de valores de pixel de um grupo atual com valores de pixel de um grupo esquerdo e um grupo direito, de forma análoga à equação 2; e, a atividade vertical pode ser determinada pela comparação de um grupo atual com um grupo superior e um grupo inferior, de forma análoga à equação 3. Da mesma forma, a atividade diagonal de 45 graus pode ser determinada pela comparação de um grupo atual de
' 81/104 vizinho inferior esquerdo de forma análoga à equação 4, e atividade diagonal de 135 graus pode ser determinada pela comparação de um grupo atual de pixels com um grupo vizinho superior esquerdo e um grupo vizinho inferior direito de forma análoga à equação 5. Em algumas implementações, a atividade horizontal, a atividade vertical, a atividade diagonal de 45 graus e a atividade diagonal de 135 graus podem ser determinadas pela comparação de um pixel atual ou grupo de pixels com os pixels vizinhos ou grupos de pixels em apenas uma direção.
Por exemplo, ao invés de determinar a atividade horizontal com base na comparação de um pixel atual com um vizinho esquerdo e um vizinho direito, a atividade horizontal pode ser determinada com base em apenas um vizinho esquerdo ou apenas um vizinho direito. . Adicionalmente, em algumas implementações, a atividade horizontal, a atividade vertical, a atividade diagonal de : 45 graus, e a atividade diagonal de 135 graus podem ser determinadas utilizando-se médias ou médias ponderadas de áreas de pixels vizinhos ao invés de pixels vizinhos únicos ou grupos de pixels únicos.
Os valores resultantes das equações de 2 a 5 podem ser divididos em um número finito de faixas, tal como 2, 4, 8 ou qualquer outro número finito, e cada faixa pode receber uma identificação de faixa.
Com referência novamente à figura 4A, por exemplo, a Faixa 1-1, a Faixa 1- 2, a Faixa 2-1, etc. são todos exemplos de identificações de faixa.
Como um exemplo, os valores de atividade horizontal podem ser divididos em quatro faixas, e as faixas podem receber IDs de Faixa 1-1, Faixa 1-2, Faixa 1- 3, e Faixa 1-4, Os valores limite horizontais (isso é, ThH1,...,ThHpy 1) podem determinar onde as faixas começam e
Ú 82/104 terminam. A Tabela 2 abaixo ilustra o caso genérico de como as IDs horizontais podem ser atribuídas para as faixas P. Tabela 2: Índice de métrica de atividade a A |
EEE Utilizando-se o exemplo da Tabela 2, se um pixel atual possuir um valor de atividade horizontal maior do que ThHi, mas inferior a ThH,, então o pixel atual está na faixa de 2-2 para a métrica 2. Os pixels atuais podem ser atribuídos para faixas verticais com IDs Verticais, faixas diagonais de 45 graus com IDs diagonais de 45 graus, e faixas diagonais de 135 graus com IDs diagonais de 135 graus, de uma forma similar como descrito acima na Tabela 2 para faixas horizontais e IDs horizontais. ' Qualquer atividade horizontal, atividade .: vertical, atividade diagonal de 45 graus, e atividade diagonal de 135 graus podem ser utilizadas como uma métrica de acordo com as técnicas de filtragem de filtro de múltiplas métricas descritas nessa descrição. Por exemplo, com referência novamente à figura 4A, a métrica 1 pode ser uma medida de atividade vertical, e a métrica 2 pode ser uma medida de atividade horizontal. Em tal exemplo, uma unidade de filtro, tal como a unidade de filtro 349 da figura 4A ou filtro 559 da figura 5, podem determinar um filtro para um pixel ou grupo de pixels com base na atividade horizontal do pixel ou grupo de pixels e a atividade vertical do pixel ou grupo de pixels. Se, por exemplo, um pixel atual possuir uma métrica de atividade horizontal que se encontra na Faixa 2-3 e uma métrica de atividade vertical que se encontra na faixa 1-3, então a unidade de filtro filtra ao pixel utilizando o Filtro 4. De
' 83/104 uma forma similar, as combinações de atividade diagonal de 45 graus e a atividade diagonal de 135 graus, atividade diagonal de 45 graus e atividade horizontal, atividade diagonal de 45 graus e atividade vertical, atividade diagonal de 135 graus e atividade horizontal, ou atividade diagonal de 135 graus e atividade vertical também podem ser utilizadas por uma unidade de filtro para selecionar um filtro para um pixel ou grupo de pixels. Em algumas implementações, três ou todas as quatro atividades horizontal, vertical, diagonal de 45 graus e diagonal de 135 graus podem ser utilizadas por uma unidade de filtro para selecionar um filtro de um pixel ou grupo de pixels.
Nas implementações descritas acima, a atividade horizontal, a atividade vertical, a atividade diagonal de 45 graus, e a atividade diagonal de 135 graus podem todas . ser utilizadas como métricas, como à métrica 1 e/ou métrica 2 na figura 4A, por exemplo. Em algumas modalidades, no ] entanto, a atividade horizontal, a atividade vertical, a atividade diagonal de 45 graus, e a atividade diagonal de 135 graus podem não ser métricas propriamente ditas, mas, ao invés disso, podem ser utilizadas como determinações intermediárias para a determinação de uma métrica de direção geral. A métrica de direção geralmente descreve em que direção (por exemplo, nenhuma direção, horizontal, vertical, diagonal de 45 graus, ou diagonal de 135 graus) os pixels estão mudança mais.
Em um exemplo, utilizando-se apenas a atividade horizontal e a atividade vertical como descrito nas equações 2 e 3, uma direção para um pixel pode ser determinada com base nas seguintes equações: Direção 1 = horizontal, se Hor activity > kl * Ver activity Direção 2 = vertical, se Ver activity > k2 * Hor activity Nniranãio NO = nonhuma Airesão do enntráriao
" 84/104 As constantes kl e k2 podem ser selecionadas de modo que a direção seja considerada apenas a direção 1 ou a direção 2 se a atividade horizontal for substancialmente maior do que a atividade vertical ou a atividade vertical for substancialmente maior do que a atividade horizontal. Se a atividade horizontal e a atividade vertical forem iguais ou aproximadamente iguais, então a direção é a direção 0. A direção 1 geralmente indica que os valores de pixel estão mudando mais na direção horizontal do que na direção vertical, e a direção 2 indica que os valores de pixel estão mudando mais na direção vertical do que na direção horizontal. A direção O indica que a mudança nos valores de pixel na direção horizontal é aproximadamente igual à mudança nos valores de pixel na direção vertical.
A métrica de direção determinada (por exemplo, . direção 0, direção 1, direção 2) pode ser utilizada como uma métrica nas técnicas de filtragem de múltiplas métricas ' descritas nessa descrição. Utilizando-se o exemplo da figura 4, novamente, a métrica 1 pode ser uma métrica de variação, tal como o valor Laplaciano de som modificada, enquanto a métrica 2 pode ser uma direção de determinação como descrito acima. Como descrito com referência à figura 4A, cada uma das direções 1, 2 e O pode ser associada com uma faixa de métrica 2 apesar de a direção 1, 2 e O representarem determinações finitas ao invés de um espectro de valores.
Em adição à utilização de apenas a atividade horizontal e a atividade vertical como descrito acima, as técnicas dessa descrição também incluem a utilização de atividade diagonal de 45 graus e a atividade diagonal de 135 graus, como descrito nas equações 4 e 5, para determinar as direções, com base nas seguintes condições: THieaAaSãXA = 1 qem ACHAS smA:Piúioidto Ss V1 4 196LAdAS saAqbPricido
' 85/104 Direção = 2, se 135deg activity > k2 * 45deg activity Direção = O do contrário.
As determinações de direção com base em atividade diagonal de 45 graus e atividade diagonal de 135 graus podem ser utilizadas como uma métrica com outra métrica, tal como um valor Laplaciano de soma modificada, como descrito acima.
Adicionalmente, uma métrica de direção também pode ser determinada, com base nas condições a seguir: Direção = 1, se 45deg activity > kl * 135deg activity, k2 * Hor activity, E k3 * Ver activity Direção = 2, se 135deg activity >> k4 * d5deg activity, k5 * Hor activity, E k6 * Ver activity Direção = 3 se Hor activity > K7 * Ver activity, k8 * 135deg activity, E k9 * 45deg activity . Direção = 4 se Ver activity > kl10 * Hor activity, kl1 * 135deg activity, e Kl2 * 45deg activity ] Direção = O, do contrário.
Como descrito acima, kl a kl2 são constantes selecionadas para determinação de quão maior que um dentre atividade horizontal, atividade vertical, atividade de 45 graus e atividade de 135 graus precisa ser comparado com outros a fim de uma direção determinada ser selecionada. A determinação de direção com base na atividade horizontal, vertical, diagonal de 45 graus e diagonal de 135 graus pode ser utilizada como uma métrica com outra métrica, tal como um valor Laplaciano de soma modificada, como descrito acima.
Outra métrica que pode ser utilizada com as técnicas dessa descrição incluem uma métrica de borda. Uma métrica de borda geralmente quantifica a atividade que pode ser indicativa da presença de uma borda em um bloco de Aa.
' 86/104 pixels se esse bloco de pixels contiver o limite de um objeto dentro de uma imagem.
Um exemplo de detecção de borda inclui a utilização de quatro pixels vizinhos do pixel atual (por exemplo, esquerdo, direito, superior e inferior) ou utilizar os oito pixels vizinhos do pixel atual (esquerdo, direito, superior, inferior, superior direito, superior esquerdo, inferior direito, inferior esquerdo). Adicionalmente, a detecção de tipo de borda pode incluir a utilização de dois pixels vizinhos, tal como superior e inferior, esquerdo e direito, superior esquerdo e inferior direito, ou superior direito e inferior esquerdo.
O pseudocódigo abaixo ilustra exemplos de como a informação de borda pode ser computada para um pixel atual (x,y) pela comparação de um valor de pixel (Rec), tal como . intensidade, do pixel atual com os valores de pixel desses pixels vizinhos (isso é, 4/8 pixels). : Uma variável EdgeType é iniciada para 0. Cada vez que uma declaração é verdadeira, a variável EdgeType é incrementada por 1 (como ilustrado no pseudocódigo por EdgeType++) ou decrementa por 1 (como ilustrado no pseudocódigo por EdgeType --). Rec[x][y] se refere a um valor de pixel, tal como à intensidade de pixel, do pixel localizado em (x,y). O primeiro agrupamento de declarações "if" são para comparar o pixel atual com os vizinhos superior, inferior, esquerdo e direito.
O segundo agrupamento de declarações "if" é para comparar o pixel atual com os vizinhos superior esquerdo, superior direito, inferior esquerdo e inferior direito.
As técnicas dessa descrição podem ser implementadas utilizando-se qualquer grupo ou ambos os grupos.
E gera sm if (ReclvliIvl1l > Recíx=11f1v1) FdageTvone +++
' 87/104 if (Rec[x][y] < Rec[x-1][y]) EdgeType --; if (Rec[x][y] > Rec[x+t1][y]) EdgeType ++; if (Rec[x][y] < Rec[x+1][y]) EdgeType --; if (Rec[x][y] > Rec[x][y-1]) EdgeType ++; if (Rec[x][y] < Rec[x][y-1]) EdgeType --; if (Rec[x][y] > Rec[x][y+1]) EdgeType ++; if (Rec[x][y] < Rec[x][y+1]) EdgeType --; = if (Rec[x][y] < Rec[x-1][y-1]) EdgeType --; if (Rec[x][y] > Rec[x+1][y-1]) EdgeType ++; if (Rec[x][y] < Rec[x+t1][y-1]) EdgeType --; if (Rec[x][y] > Rec[x-1][y+1]) EdgeType ++; if (Rec[x][y] < Rec[x-1][y+1]) EdgeType --; if (Rec[x][y] > Rec[x+1][y+1]) EdgeType ++; if (Rec[x][y] < Rec[x+1][y+1]) EdgeType --; Se um pixel atual for um local máximo, então o valor de pixel do pixel será maior do que todos os seus . vizinhos e terá um tipo de borda igual a 4 se utilizando quatro vizinhos ou um tipo de borda de 8 estiver utilizando . 5 oito vizinhos.
Se um pixel atual for mínimo local, então o valor de pixel do pixel será inferior a todos os seus vizinhos e terá um tipo de borda de -4 se utilizando quatro vizinhos ou um tipo de borda de -8 se utilizando oito vizinhos.
Dessa forma, utilizando-se as técnicas ilustrativas descritas acima para determinação de um tipo de borda entre -4 e 4 ou -8 e 8 pode ser utilizado na determinação de um filtro.
Os valores determinados para o tipo de borda (isso é, valores de -4 a 4 ou valores de -8 a 8) podem ser mapeados para faixas de uma métrica, tal como a Métrica 1 ou Métrica 2 da figura 4A.
Em algumas implementações, os valores absolutos da determinação de tipo de borda podem ser mapeados para faixas, de modo que um tipo de borda de -3 a 3, por exemplo, mapeie o mesmo filtro.
S 88/104 Os cálculos das várias métricas descritas nessa descrição são apenas destinados como exemplos e não são exaustivos.
Por exemplo, as métricas podem ser determinadas utilizando-se janelas ou linhas de pixels que incluem mais pixels vizinhos do que descrito nessa descrição.
Adicionalmente, em algumas implementações, as métricas descritas nessa descrição podem ser calculadas utilizando-se a subamostragem de pixels em uma linha ou janela em particular.
Por exemplo, para se calcular uma métrica de atividade de bloco para um bloco de pixels 4x4, as métricas para atividade e direção podem ser calculadas como se segue: * Métrica de direção eVer act(i,j) = abs (X(i,j)<<l - X(i,j-l1) - X(i,j+1) ) eHor act(i,j) = abs (X(i,j)<<l - X(i-l,j3) - . X(itl1,3) ) *Hp = Xi=0,2 Ej=eo,2 Hor act(i,j) . *Vg= Zi-o,2 2j=0,2 Vert act(i,j) eDirection = O, 1 (Hg> k1*Vz), 2 (Vr > K2*Hr) e Métrica de Atividade eL; = Hg + Vz e5 classes (0, 1, 2, 3, 4) e Métrica eCombinação de Atividade e Direção (por exemplo, 15 ou 16 combinações como explicado acima no exemplo da Figura 4B). Hor act (1i,j) geralmente se refere à atividade horizontal do pixel atual (i,j), e Vert act(i,j) geralmente se refere à atividade vertical do pixel atual (i,j). X(i,j) geralmente se refere a um valor de pixel do pixel (i,j). Hs se refere à atividade horizontal do bloco 4x4, que, nesse exemplo, é determinado com base em uma soma da atividade horizontal para pixels (0,0), (0,2), (2,0) e (2,2). V; Se refere à atividade vertical do bloco 4x4, que, nesse exemplo, é determinado com base em uma soma da atividade
' 89/104 . . vertical dos pixels (0,0), (0,2), (2,0) e (2,2). "<<l" representa uma operação de multiplicação por dois.
Como explicado acima, com base nos valores de H; e Vx, Uma direção pode ser determinada.
Utilizando-se o exemplo acima, se o valor de H; for maior do que k vezes o valor de Vs, então a direção pode ser determinada como sendo a direção 1 (isso é, horizontal), que pode corresponder a mais atividade horizontal do que atividade vertical.
Se o valor de V5 for maior que k vezes o valor de Hi, então a direção pode ser determinada como sendo a direção 2 (isso é, vertical) que pode corresponder a mais atividade vertical do que atividade horizontal.
Do contrário, a direção pode ser determinada como sendo a direção O (isso é, sem direção), significando que nem a direção vertical, nem a horizontal, é dominante.
Os rótulos para as várias . direções e as razoes utilizadas para se determinar as direções constituem meramente um exemplo, e outros rótulos ] e razoes também podem ser utilizados.
Atividade (Lg) para o bloco 4x4 pode ser determinada como uma soma da atividade horizontal e a vertical.
O valor de Ly pode ser classificado em uma faixa, como descrito acima.
Esse exemplo em particular ilustra cinco faixas apesar de mais ou menos faixas poderem ser utilizadas de forma similar.
Com base na combinação da atividade e direção, um filtro para o bloco 4x4 de pixels pode ser selecionado.
Como descrito acima, um filtro pode ser selecionado com base em um mapeamento bidimensional de atividade e direção de filtros, como descrito com referência às figuras 4A e 4B, ou atividade e direção podem ser combinadas em uma única métrica, e essa métrica única pode ser utilizada para selecionar um filtro.
A figura 6A representa bloco de pixels 4x4. A AAA Ni
. 290/104 apenas quatro dos dezesseis pixels são utilizados.
Os quatro pixels são pixels (0,0) que é rotulado como pixel 601, pixel (2,0) que é rotulado como pixel 602, pixel (0,2) que é rotulado como pixel 603, e pixel (2,2) que é rotulado como pixel 604. A atividade horizontal do pixel 601 (isso é, hor act(0,0)), por exemplo, é determinada com base em um pixel vizinho esquerdo e um pixel vizinho direito.
O pixel vizinho direito é rotulado com pixel 605. O pixel vizinho esquerdo é localizado em um bloco diferente do bloco 4x4 e não é ilustrado na figura 6A.
A atividade vertical de pixel 602 (isso é, ver act(2,0)), por exemplo, é determinada com base em um pixel vizinho superior e um pixel vizinho inferior.
O pixel vizinho inferior é rotulado como pixel i 606, e o pixel vizinho superior é localizado em um bloco diferente do bloco 4x4 e não é ilustrado na figura 6A. . Geralmente utilizando as mesmas técnicas descritas acima, uma métrica de atividade bloco também pode . ser calculada utilizando um subconjunto diferente de pixels como segue: * Métrica de Direção eVer act(i,j) = abs ( X(i,j)<<l - X(i,j-1) - X(i,3+l) ) *Hor act(i,j) = abs ( X(i,j)<<l - X(i-1,j3) - X(i+l,3) ) * Hz = Xic1,2 Xje1,2 H(i,j) * VB = Xi-1,2 2je1,2 V(i,)) eDirection = O, 1(H > kl1*V), 2 (V > k2*H) * Métrica de Atividade *Lg = Hp; + Vg *e5 classes (0, 1, 2, 3, 4) e Métrica eCombinação de Atividade e Direção (por exemplo, 15 ou 16 combinações como explicado acima no exemplo da Figura 4B). Esse subconjunto diferente de pixels para calcular H; e V5 inclui pixels (1,1), (2,1), (1,2) e (2,2)
' 91/104 ilustrados na figura 6B como pixels 611, 612, 613 e 614, respectivamente. Como pode ser observado pela figura 6B, todos os pixels vizinhos superiores, pixels vizinhos inferiores, pixels vizinhos direitos e pixels vizinhos esquerdos para os pixels 611, 612, 613, 614 são todos localizados dentro do bloco 4x4. No exemplo da figura 6B, os pixels 611, 612, 613 e 614 são todos localizados no interior do bloco em oposição à localização no limite de bloco. Os pixels 601, 602, 603, e 605 na figura 6A e os pixels 621, 624, 625 e 628 na figura 6C são exemplos de pixels localizados no limite de bloco. Em outras implementações, subconjuntos diferentes adicionais de pixel podem ser escolhidos. Por exemplo, os subconjuntos podem ser selecionados de modo que os pixels vizinhos superior e inferior para os pixels do subconjunto estejam dentro do . bloco 4x4, mas alguns pixels vizinhos esquerdo e direito estão em blocos vizinhos. Os subconjuntos também podem ser ] selecionados de modo que os pixels vizinhos esquerdo e direito para os pixels do subconjunto estejam dentro do bloco 4x4, mas alguns pixels vizinhos superior e inferior estejam nos blocos vizinhos.
Geralmente a utilização das mesmas técnicas que as descritas acima, uma métrica de atividade de bloco também pode ser calculada utilizando um subconjunto de oito pixels como segue: * Métrica de Direção eVer act(i,j) = abs ( X(i,j)<<l1 - X(i,j-1) - X(i,j+l1) ) eHor act(i,j) = abs ( X(i,j)<<1 - X(i-1,3) - X(itl1,3) ) Hp = Xico, 1,2, 3 Ljei,2 H(i,j) eVB= Xiso, 1, 2,3 Zje1,2 V(i,Í) eDirection = O, 1(H > k1*Vv), 2 (V > k2*H) e Métrica de Atividade ae Aro LN O AO e5 classes (0, 1, 2, 3, 4) * Métrica eCombinação de Atividade e Direção (por exemplo, 15 ou 16 combinações como explicado acima no exemplo da Figura 4B). Esse subconjunto diferente de oito pixels para cálculo de H; e V5 inclui pixels (0,1), (1,1), (2,1), (3,1), (0,2), (1,2), (2,2) e (3,2) ilustrados na figura 6C como pixels 621, 622, 623, e 624, 625, 626, 627 e 628, respectivamente.
Como pode ser observado a partir da figura 6C, todos os pixels vizinhos superiores e pixels vizinhos inferiores para os pixels 621, 622, 623, e 624, 625, 626, 627 e 628 são localizados dentro do bloco 4x4, apesar de os pixels 621 e 625 possuírem, cada um, pixels vizinhos esquerdos em um bloco vizinho esquerdo, e pixels 624 e 628 possuírem, cada um, pixels vizinhos direitos em um bloco . vizinho direito.
Essa seleção particular de pixels pode reduzir a complexidade do codificador e/ou decodificador . evitando a necessidade de um armazenador de linha para O armazenamento de valores de pixel dos blocos vizinhos superior e/ou inferior.
Devido à ordem de varredura da esquerda para a direita e de cima para baixo, OS armazenadores de linha para valores de pixel de blocos vizinhos superior e inferior frequentemente precisam armazenar os valores de pixel para toda alinha superior ou inferior, que no caso do vídeo 1080P, por exemplo, pode ser de 1920 pixels.
Os armazenadores de linha para os blocos vizinhos esquerdo e direito, no entanto, frequentemente só precisam armazenar os valores de pixel para uma LCU ou um par de LCUs, que podem ser apenas de 64 ou 128 pixels, por exemplo.
Dessa forma, os armazenadores de linha para valores de pixel de blocos de vizinho superior e inferior podem precisar ser significativamente maiores do que os Arma sAanadarão do linha ntilioadeoe nara ne valares de nivel
. 93/104 dos blocos de vizinho esquerdo e direito. A seleção de pixels ilustrada na figura 6C também pode ser capaz de evitar o uso de armazenadores de linha para valores de pixel de bloco vizinho superior e inferior, reduzindo, assim, a complexidade de codificação.
Os exemplos das figuras 6A a 6C são meramente técnicas introduzidas dessa descrição. É contemplado que essas técnicas podem ser estendidas aos blocos além de apenas 4x4 e que subconjuntos diferentes de pixels podem ser selecionados.
Ao se computar uma métrica de atividade de bloco, ao invés de pixels originais, os pixels quantizados (isso é, X(i,j) >>N) podem ser utilizados para se reduzir a complexidade das operações, tal como operações de adição.
Adicionalmente, os cálculos podem ser a diferença absoluta . com base em Laplaciano. Por exemplo, ao se computar Hor act(i,j) ou Ver act(i,j), as diferenças absolutas podem r ser utilizadas ao invés de valores Laplacianos, como se segue: * Métrica Direcional eVer act(i,j) = abs ( X(i,j) - X(i,j-1)) eHor act(i,j) = abs ( X(i,j) - X(i-1,)3)) * Hp = Xi=0,1,2 Zj=0,1,2 H(i,j)) *VB= Xi-o,1,2 2j-0,1,2 V(i,j) eDirection = 0, 1(H>2V), 2 (V>2H) * Métrica de Atividade eL; = Hg; + Vg +5 classes (0, 1, 2, 3, 4) e Métrica eatividade + Direção (por exemplo, 15 ou 16 combinações como explicado acima no exemplo da Figura 4B).
Essa descrição descreveu as técnicas de subamostragem com referência a um grupo limitado de métricas específicas. É contemplado, no entanto, que essas
. 94/104 outras métricas, tal como as outras métricas discutidas nessa descrição, que podem ser utilizadas para fins de determinação de um filtro. Adicionalmente, apesar das técnicas de subamostragen dessa descrição terem sido descritas com referência aos blocos de pixel 4x4, as técnicas também podem ser aplicáveis a blocos de outros tamanhos.
A figura 7 é um fluxograma ilustrando uma técnica de codificação de vídeo consistente com essa descrição. As técnicas descritas na figura 7 podem ser realizadas pela unidade de filtro de um codificador de vídeo ou um decodificador de vídeo, tal como a unidade de filtro 349 do codificador de vídeo 350 ou a unidade de filtro 559 do decodificador de vídeo 560. A unidade de filtro determina uma primeira métrica para um grupo de pixels dentro de um . bloco de pixels 710. A primeira métrica pode, por exemplo, ser uma métrica de atividade tal como um valor Laplaciano 7 de soma modificada, ou a primeira métrica pode ser uma métrica de direção. A primeira métrica pode ser determinada, por exemplo, com base em uma comparação do conjunto de pixels no bloco, ou com base em um subconjunto de pixels no bloco, com outros pixels no bloco. A unidade de filtro determina adicionalmente uma segunda métrica para o bloco 720. A segunda métrica pode, por exemplo, ser uma métrica de direção que é determinada com base na comparação de uma medida de atividade horizontal com uma medida de atividade vertical. Com base na primeira métrica e na segunda métrica, a unidade de filtro determina um filtro
730. A unidade de filtro gera uma imagem filtrada pela aplicação do filtro ao bloco 740. Como discutido acima, em algumas implementações, o bloco pode ser um bloco 2x2, 4x4 ou MXN de pixels, utilizado para determinar a primeira mÁáddeiIAS A 4 qaAMe SAS mÁáÁSViIiAS Dm ms Amas imeéelamaeantamãÃãão -
' 95/104 primeira métrica pode ser uma métrica de atividade horizontal enquanto a segunda métrica é uma métrica de atividade vertical, ou a primeira métrica pode ser uma métrica de borda enquanto a segunda métrica é uma métrica de direção.
A figura 8A é um fluxograma ilustrando as técnicas de codificação de vídeo consistentes com essa descrição. As técnicas descritas na figura 8A podem ser realizadas pela unidade de filtro de um decodificador de vídeo, tal como a unidade de filtro 559 do decodificador de vídeo 560. A unidade de filtro 559 mapeia uma primeira combinação de faixa com um primeiro filtro 810A. A primeira combinação de faixa é combinação de uma primeira faixa de valores para uma primeira métrica e uma primeira faixa de valores para uma segunda métrica. A primeira métrica pode, .« por exemplo, ser um valor Laplaciano de soma modificada e a segunda métrica pode ser uma métrica de direção, apesar de 7 outras métricas também poderem ser utilizadas. A unidade de filtro 559 mapeia uma segunda combinação de faixa para um segundo filtro 820A. A segunda combinação de faixa é uma combinação de uma segunda faixa de valores para a primeira métrica e uma segunda faixa de valores para a segunda métrica. A unidade de filtro 559 então mapeia Uma combinação de faixa atual para um filtro com base me uma palavra código recebida. A combinação de faixa atual inclui a primeira faixa de valores da primeira métrica e a segunda faixa de valores para a segunda métrica. Se a palavra código for uma primeira palavra código 830A, (sim), então a unidade de filtro 559 mapeia a combinação de faixa atual com o primeiro filtro 840A. A primeira palavra código indica que a combinação de faixa atual é mapeada para O mesmo filtro que a primeira combinação de faixa. Se a
' 96/104 a unidade de filtro 559 mapeia a combinação de faixa atual para o segundo filtro 860A.
A segunda palavra código indica que a combinação de faixa atual é mapeada para o mesmo filtro que a segunda combinação.
Se a palavra código não for uma primeira palavra código nem uma segunda palavra código 850A, (não), então a unidade de filtro 559 mapeia a combinação de faixa atual para um terceiro filtro 870A.
Se em resposta ao recebimento de uma terceira palavra código, onde a terceira palavra código identifica esse terceiro filtro.
No exemplo da figura 8A, a primeira palavra código e a segunda palavra código podem cada uma, incluir menos bits do que a terceira palavra código.
A figura 8B é um fluxograma ilustrando as técnicas de codificação de vídeo consistentes com essa descrição.
As técnicas descritas na figura 8B podem ser . realizadas pela unidade de filtro de um decodificador de vídeo, tal como à unidade de filtro 559 do decodificador de 1 vídeo 560. A unidade de filtro 559 gera um mapeamento de combinações de faixa de filtros 810B.
Cada combinação de faixa, por exemplo, pode incluir uma faixa para uma primeira métrica e uma faixa para uma segunda métrica.
Em resposta ao recebimento da primeira palavra código que sinaliza uma combinação de faixa atual apeada para um mesmo filtro como uma combinação de faixa anterior 820B, (sim), a unidade de filtro 559 mapeia a combinação de faixa atual para o mesmo filtro que a combinação de faixa anterior 830B.
Em resposta ao recebimento de uma segunda palavra código que sinaliza a combinação de faixa atual é mapeada para um filtro diferente da combinação de faixa anterior 820B, (não), a unidade de filtro 559 mapeia a combinação de faixa atual para um novo filtro 840B.
Como descrito acima, a combinação de faixa atual pode ser determinada com base NM E E ED nado ATA Amo ASSES AS AvTvAmeTAS í o novo filtro pode ser determinado com base na ordem na qual os coeficientes de filtro são sinalizados.
A figura 9º é um fluxograma ilustrando as técnicas de codificação de vídeo consistentes com essa descrição.
As técnicas descritas na figura 9A podem ser realizadas pela unidade de filtro de um codificador de vídeo, tal como a unidade de filtro 349 do codificador de vídeo 350. A unidade de filtro 349 determina um mapeamento de combinações de faixa para os filtros 910A.
Cada combinação de faixa inclui uma faixa de valores para uma primeira métrica e uma faixa de valores para uma segunda métrica.
Para uma combinação de faixa atual, se uma combinação de faixa atual for mapeada para o mesmo filtro que uma combinação de faixa anterior que compreende a mesma faixa de valores para a primeira métrica 920A, (sim), então - a unidade de filtro 349 gera uma primeira palavra código 930A.
Se a combinação de faixa atual for mapeada para oO 1 mesmo filtro que uma combinação de faixa anterior que compreende a mesma faixa de valores para a segunda métrica 940A, (sim), então à unidade de filtro 349 gera uma segunda palavra código 950A.
Se a combinação de faixa atual não for mapeada para a combinação de faixa anterior que compreende a mesma faixa de valores para a primeira métrica Ou a combinação de faixa anterior que compreende a mesma faixa de valores para à segunda métrica 950A, (não), então a unidade de filtro 349 gera uma terceira palavra código 960A.
A terceira palavra código pode identificar um filtro mapeado para a combinação de faixa atual.
A figura 98 é um fluxograma ilustrando as técnicas de codificação de vídeo consistentes com essa descrição.
AS técnicas descritas na figura 9BA podem ser realizadas pela unidade de filtro de um codificador de Ns
' 98/104 í vídeo 350. A unidade de filtro 349 determina um mapeamento de combinações de faixa para os filtros 910B. Cada combinação de faixa pode, por exemplo, incluir uma faixa para uma primeira métrica e uma faixa para uma segunda métrica. Quando uma combinação de faixa atual sendo codificada possui o mesmo filtro que uma combinação de faixa codificada anteriormente 920B, (sim), a unidade de filtro 349 pode gerar uma primeira palavra código para sinalizar que a combinação de faixa atual é mapeada para O mesmo filtro que uma combinação de faixa anteriores 930B. Quando uma combinação de faixa atual sendo codificada não tem o mesmo filtro que uma combinação de faixa codificada anteriormente 920B, (não), a unidade de filtro 349 pode gerar uma segunda palavra código 940B. A segunda palavra código pode identificar o filtro mapeado para a combinação . de faixa atual. Como descrito acima, a combinação de faixa atual pode ser determinada com base em uma ordem de 7 transmissão conhecida. No exemplo da figura 9B, a prímeira palavra código pode incluir menos bits do que uma segunda palavra código.
Nos exemplos das figuras 8A e 8B e figuras 9A e 9B, os termos "primeira palavra código", "segunda palavra código" e "terceira palavra código" são utilizadas para diferenciar entre as palavras código diferentes e não significam em uma ordenação sequencial de palavras código.
A figura 10 é um fluxograma ilustrando as técnicas de codificação de vídeo consistentes com essa descrição. As técnicas descritas na figura 10 podem ser realizadas pela unidade de filtro de um codificador de vídeo, tal como uma unidade de filtro 349 do codificador de vídeo 350, ou a unidade de filtro de um decodificador de vídeo, tal como a unidade de filtro 559. A unidade de
. 99/104 para filtros 1010. As combinações de faixa incluem uma faixa para uma primeira métrica e uma faixa para uma segunda métrica. A unidade de filtro determina uma identificação de combinação de faixa única (ID) para cada combinação de faixa 1020. As IDs de combinação de faixa únicas correspondem a valores sequenciais. A unidade de filtro atribuí uma primeira ID de grupo única para um primeiro grupo de combinações de faixa com base no valor sequencial de uma ID de combinação de faixa de pelo menos uma combinação de faixa no primeiro grupo de combinações de faixa 1030. Os grupos de combinações de faixa incluem combinações de faixa mapeadas para o mesmo filtro, as IDs de grupo únicas correspondendo a um conjunto de valores sequenciais. A unidade de filtro codifica um primeiro conjunto de coeficientes de filtro correspondendo ao mesmo « filtro com base no valor sequencial da primeira ID de filtro única 1040. No caso do codificador de vídeo, a ' codificação do primeiro conjunto de coeficientes de filtro pode incluir, por exemplo, a sinalização de coeficientes de filtro em um fluxo de bits codificado utilizando técnicas de codificação diferenciais. No caso de um decodificador de vídeo, a codificação do primeiro conjunto de coeficientes de filtro pode incluir a reconstrução dos coeficientes de filtro com base na informação recebida em um fluxo de bits codificado.
A figura 11 é um fluxograma ilustrando técnicas de codificação de vídeo consistentes com essa descrição. AS técnicas descritas na figura 11 podem ser realizadas pela unidade de filtro de um codificador de vídeo, tal como uma unidade de filtro 349 do codificador de vídeo 350, ou a unidade de filtro de um decodificador de vídeo, tal como a unidade de filtro 559. A unidade de filtro determina um manrnamanto do saermbinranãoc de faiva nara filterne 111N (Ao
. 100/104 combinações de faixa podem incluir uma faixa para uma primeira métrica e uma faixa para uma segunda métrica. Cada combinação de faixa pode ter uma identificação de combinação de faixa única (ID), e cada ID de combinação de faixa única pode corresponder a um valor sequencial para a combinação de faixa. A unidade de filtro pode atribuír uma ID de grupo única para cada grupo de combinações de faixa
1120. A unidade de filtro pode atribuír IDs de grupo únicas, por exemplo, com base nos valores sequenciais das combinações de faixa. Um grupo de combinações de faixa pode incluir combinações de faixa mapeadas para um filtro comum, e as IDs de grupo únicas podem corresponder a um conjunto de valores sequenciais. A unidade de filtro pode codificar conjuntos de coeficientes de filtro para os filtros com base nas IDs de grupo únicas 1140. . No exemplo da figura 11, a unidade de filtro pode atribuír IDs de grupo únicas, por exemplo, pela atribuíção ' de uma ID de grupo única correspondendo a um valor sequencial mais baixo das IDs de grupo únicas para um grupo de combinações de faixa que compreende uma combinação de faixa com uma ID de combinação de faixa correspondendo a um valor sequência mais baixo das IDs de combinação de faixa. Em outro exemplo, a unidade de filtro pode atribuír a ID de grupo única correspondendo a um valor sequencial mais alto das IDs de grupo únicas para um grupo de combinação de faixa que compreende uma combinação de faixa com uma ID de combinação de faixa correspondendo à um valor sequencial mais alto das IDs de combinação de faixa.
Em casos nos quais a unidade de filtro é parte de um decodificador de vídeo, a unidade de filtro pode codificar os conjuntos de coeficientes de filtro pela geração de conjuntos de coeficientes de filtro com base na infoarmanão recebida em vm fliuvo de bits codificado, à
. 101/104 unidade de filtro pode, por exemplo, gerar conjuntos de coeficientes de filtro utilizando técnicas de codificação diferenciais. Em casos nos quais a unidade de filtro é parte de um codificador de vídeo, a unidade de filtro pode codificar os conjuntos de coeficientes de filtro pela sinalização de conjuntos e coeficientes de filtro em um fluxo de bits codificado em uma ordem selecionada com base nos valores sequenciais das IDs de grupo únicas. A unidade de filtro pode, por exemplo, sinalizar os conjuntos de coeficientes de filtro utilizando técnicas de codificação diferenciais.
A descrição acima foi simplificada em alguma extensão à fim de portar detalhes. Por exemplo, a descrição geralmente descreve conjuntos de filtros sendo sinalizados quadro-a-quadro, mas conjuntos de filtros também podem ser . sinalizados sequência por sequência, grupo de imagem por grupo de imagem, grupo de faixas por grupo de fatias, CU-a- : CU, LCU-a-LCU, e com base em outras coisas. Em geral, os filtros podem ser sinalizados para qualquer agrupamento de uma ou mais CUs. Adicionalmente, na implementação, pode haver inúmeros filtros por entrada por CU, inúmeros coeficientes por filtro, e inúmeros níveis diferentes de variação com cada um dos filtros sendo definido para uma faixa diferente de variação. Por exemplo, em alguns casos pode haver dezesseis ou mais filtros definidos para cada entrada de uma CU e dezesseis diferentes faixas de variação correspondendo a cada filtro. Adicionalmente, quando essa descrição descreve a transmissão de informação de filtro, deve-se assumir que toda a informação de filtro seja transmitida no mesmo nível de codificação. Por exemplo, em algumas implementações, alguma informação de filtro tal como sintaxe de descrição de filtro pode ser sinalizada asda A Reid Ao Lados a LfLadidsoo AmRNMHIANdhA Amd ryrsa din farmasãa
º 102/104 de filtro tal como coeficientes de filtro são sinalizadas LCU-a-LCU. A sintaxe em outros níveis de hierarquia de codificação, tal como nível de sequência, nível de GOP, ou outros níveis também podem ser definida para o transporte de alguma ou toda a informação de filtro.
Cada um dos filtros para cada entrada pode incluir muitos coeficientes. Em um exemplo, os filtros compreendem filtros bidimensionais com 81 coeficientes diferentes definidos por um suporte de filtro que se estende em duas dimensões. No entanto, o número de coeficientes de filtro que soa sinalizados para cada filtro pode ser inferior a 81 em alguns casos. A simetria de coeficiente, por exemplo, pode ser imposta de modo que os coeficientes de filtro em uma dimensão ou quadrante possa corresponder a valores invertidos ou simétricos com relação . aos coeficientes em outras dimensões ou quadrantes. A simetria de coeficiente pode permitir que 81 diferentes 7 coeficientes sejam representados por menos coeficientes, caso no qual o codificador e o decodificador podem assumir que os valores invertidos ou espelhados de coeficientes definem outros coeficientes. Por exemplo, os coeficientes (5, —-2, 10, 10, -2, 5) podem ser codificados e sinalizados como o subconjunto de coeficientes (5, -2, 10). Nesse caso, o decodificador pode saber que esses três coeficientes definem o conjunto simétrico maior de coeficientes (5, -2, 10, 10, -2, 5).
As técnicas dessa descrição podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho sem fio, e circuito integrado (IC) ou um conjunto de ICs (isso é, um conjunto de chip). Quaisquer componentes, módulos ou unidades foram descritos fornecidos para enfatizar os aspectos funcionais e não exigem necessariamente a realização por diferentes unidades de hardware. De acordo, as técnicas descritas aqui podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em hardware, quaisquer características descritas como módulos, unidades ou componentes podem ser implementadas juntas em um dispositivo lógico integrado ou separadamente como dispositivos lógicos discretos, porém interoperacionais. Se implementadas em software, as técnicas podem ser realizadas pelo menos em parte por um meio legível por computador compreendendo instruções que, quando executadas em um processador, realizam um ou mais dos métodos descritos acima. O meio legível por computador pode compreender um meio de armazenamento legível em computador e pode formar . parte de um produto de programa de computador, que pode incluir materiais de empacotamento. O meio de armazenamento 7 legível por computador pode compreender memória de acesso randômico (RAM), tal como memória de acesso randômico dinâmica sincronizada (SDRAM), memória de somente leitura (ROM), memória de acesso randômico não volátil (NVRAM), memória de somente leitura programável e apagável eletricamente (EEPROM), memória FLASH, mídia de armazenamento de dados magnética ou ótica, e similares. AS técnicas adicionalmente ou alternativamente podem ser realizadas pelo menos em parte por um meio de comunicação legível por computador que porta ou comunica o código na forma de instruções ou estruturas de dados e que pode ser acessado, lido e/ou executado por um computador.
O código pode ser executado por um ou mais processadores, tal como um ou mais processadores de sinal digital (DSPs), microprocessadores de finalidade geral, um Md Ae idAa dJSadavvaAdasA da am TVTiAaASASIA nqeomaAmÍ£f£fias /NCTOYV aVrVraniacao
. 104/104 lógicos programáveis em campo (FPGA), ou outro conjunto de circuito discreto ou integrado equivalente.
De acordo, o termo "processador", como utilizado aqui pode fazer referência a qualquer uma das estruturas acima ou qualquer outra estrutura adequada para implementação das técnicas descritas aqui.
Adicionalmente, em alguns aspectos, a funcionalidade descrita aqui pode ser fornecida dentro de módulos de software dedicados ou módulos de hardware dedicados configurados para a codificação e a decodificação, ou incorporados a um codec de vídeo combinado.
Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
Vários aspectos da descrição foram descritos.
Esses e outros aspectos estão dentro do escopo das reivindicações a seguir.
Claims (15)
1. Método de codificação de vídeo, o método compreendendo: determinar uma direção de pelo menos um pixel de um bloco de pixels; determinar uma métrica para o pelo menos um pixel do bloco de pixels, em que a métrica é determinada com base em uma comparação de valores de pixel para um subconjunto de pixels no bloco com o pelo menos um pixel, e em que o bloco de pixels é um bloco de pixels MxN, e em que pelo menos um dentre M ou N é 2 ou maior, e em que a métrica compreende uma métrica de atividade; determinar um filtro para o pelo menos um pixel do bloco de pixels com base na métrica e na direção, e gerar uma imagem filtrada pela aplicação do filtro ao pelo menos um pixel do bloco de pixels.
2. Método, de acordo com a reivindicação 1, no qual a direção compreende um de uma direção horizontal, uma direção vertical, uma direção à 45 graus, e uma direção à 135 graus.
3. Método, de acordo com a reivindicação 1, no qual determinar a direção compreende comparar uma medida de atividade horizontal para uma medida de atividade vertical, e em que a atividade horizontal é determinada com base na comparação de um valor de pixel de pelo menos um pixel no subconjunto com um valor de pixel de um pixel vizinho esquerdo e um valor de pixel de um pixel vizinho direito, em que o pixel vizinho esquerdo e o pixel vizinho direito estão ambos no bloco de pixels.
4. Método, de acordo com a reivindicação 3, no qual a atividade vertical é determinada com base na comparação de um valor de pixel de pelo menos um pixel no subconjunto com um valor de pixel de um pixel vizinho superior e um valor de pixel de um pixel vizinho inferior, em que o pixel vizinho superior e o pixel vizinho inferior estão ambos no bloco de pixels.
5. Método, de acordo com a reivindicação 1, no qual o subconjunto de pixels compreende pixels não no limite do bloco MxN.
6. Método, de acordo com a reivindicação 1, no qual o bloco de pixels é um bloco de pixels 4x4 incluindo dezesseis pixels, e em que o subconjunto de pixels inclui quatro pixels.
7. Método, de acordo com a reivindicação 1, em que determinar a métrica compreende: comparar o pelo menos um pixel com um primeiro pixel vizinho do subconjunto de pixels; incrementar uma variável de métrica de extremidade em resposta a um valor de pixel do pelo menos um pixel sendo maior que um valor de pixel do primeiro pixel vizinho; decrementar a variável de métrica de extremidade em resposta ao valor de pixel do pelo menos um pixel sendo menor que o valor de pixel do primeiro pixel vizinho;
8. Método, de acordo com a reivindicação 7, no qual determinar a métrica compreende adicionalmente: comparar o pelo menos um pixel com um segundo pixel vizinho do subconjunto de pixels; incrementar a variável de métrica de extremidade em resposta a um valor de pixel do pelo menos um pixel sendo maior que um valor de pixel do segundo pixel vizinho; decrementar a variável de métrica de extremidade em resposta ao valor de pixel do pelo menos um pixel sendo menor que o valor de pixel do segundo pixel vizinho;
9. Método, de acordo com a reivindicação 1, no qual o primeiro pixel vizinho e o segundo pixel vizinho compreendem um dos: um pixel vizinho esquerdo e um pixel vizinho direito; um pixel vizinho superior e um pixel vizinho inferior; um pixel vizinho inferior esquerdo e um pixel vizinho superior direito; e um pixel vizinho superior esquerdo e um pixel vizinho inferior direito.
10. Método, de acordo com a reivindicação 1, no qual o método é realizado por um dispositivo de codificação de vídeo compreendendo um codificador de vídeo.
11. Método, de acordo com a reivindicação 1, no qual o método é realizado por um dispositivo de codificação de vídeo compreendendo um decodificador de vídeo.
12. Aparelho, compreendendo: mecanismos para determinar uma direção de pelo menos um pixel de um bloco de pixels; mecanismos para determinar uma métrica para oO pelo menos um pixel do bloco de pixels, em que a métrica é determinada com base em uma comparação de valores de pixel para um subconjunto dos pixels no bloco com o pelo menos um pixel, e em que o bloco de pixels é um bloco de pixels MxN, e em que pelo menos um dentre M ou N é 2 ou maior, e em que a métrica compreende uma métrica de atividade; mecanismos para determinar um filtro para o pelo menos um pixel do bloco de pixels com base na métrica e na direção; e mecanismos para gerar uma imagem filtrada pela aplicação do filtro ao pelo menos um pixel do bloco de pixels.
13. Aparelho, de acordo com a reivindicação 12, em que a direção compreende um de uma direção horizontal, uma direção vertical, uma direção à 45 graus, e uma direção à 135 graus.
14. Aparelho, de acordo com a reivindicação 13, em que os mecanismos para determinar a métrica compreendem mecanismos para comparar uma medida de atividade horizontal para uma medida de atividade vertical, e em que os mecanismos para comparar a medida de atividade horizontal para a medida de atividade vertical compreendem mecanismos para comparar um valor de pixel de pelo menos um pixel no subconjunto com um valor de pixel de um pixel vizinho esquerdo e um valor de pixel de um pixel vizinho direito, em que o pixel vizinho esquerdo e o pixel vizinho direito estão ambos no bloco de pixels.
15. Meio de armazenamento legível por computador possuindo instruções armazenadas no mesmo que quando executadas fazem com que um ou mais processadores realizem o método de acordo com qualquer uma das reivindicações de 1 all.
i 1/15
Á
DISPOSITIVO DE DISPOSITIVO DE
ORIGEM DESTINO 1u2 116 . DISPOSITIVO DE
FONTE DE VÍDEO EXIBIÇÃO 120 130
A CODIFICADOR mon | DECODIFICADOR DE VÍDEO ] ARMAZENAMENTO DE VÍDEO 12 Pao 128 lo———o [À
MODEM MODEM 123 127
TRANSMISSOR RECEPTOR o
Applications Claiming Priority (23)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161445967P | 2011-02-23 | 2011-02-23 | |
US61/445,967 | 2011-02-23 | ||
US201161448771P | 2011-03-03 | 2011-03-03 | |
US61/448,771 | 2011-03-03 | ||
US201161473713P | 2011-04-08 | 2011-04-08 | |
US61/473,713 | 2011-04-08 | ||
US201161476260P | 2011-04-16 | 2011-04-16 | |
US61/476,260 | 2011-04-16 | ||
US201161478287P | 2011-04-22 | 2011-04-22 | |
US61/478,287 | 2011-04-22 | ||
US201161503426P | 2011-06-30 | 2011-06-30 | |
US201161503440P | 2011-06-30 | 2011-06-30 | |
US201161503434P | 2011-06-30 | 2011-06-30 | |
US61/503,440 | 2011-06-30 | ||
US61/503,426 | 2011-06-30 | ||
US61/503,434 | 2011-06-30 | ||
US201161527463P | 2011-08-25 | 2011-08-25 | |
US61/527,463 | 2011-08-25 | ||
US201161531571P | 2011-09-06 | 2011-09-06 | |
US61/531,571 | 2011-09-06 | ||
US13/401,685 | 2012-02-21 | ||
US13/401,685 US8964853B2 (en) | 2011-02-23 | 2012-02-21 | Multi-metric filtering |
PCT/US2012/026166 WO2012116095A1 (en) | 2011-02-23 | 2012-02-22 | Multi-metric filtering |
Publications (1)
Publication Number | Publication Date |
---|---|
BR112013021617A2 true BR112013021617A2 (pt) | 2020-09-29 |
Family
ID=46652728
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112013021617-4A BR112013021617A2 (pt) | 2011-02-23 | 2012-02-22 | filtragem multimétrica |
BR112013021476A BR112013021476A2 (pt) | 2011-02-23 | 2012-02-22 | filtragem multimétrica |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112013021476A BR112013021476A2 (pt) | 2011-02-23 | 2012-02-22 | filtragem multimétrica |
Country Status (23)
Country | Link |
---|---|
US (7) | US8982960B2 (pt) |
EP (8) | EP2679008B1 (pt) |
JP (7) | JP5752812B2 (pt) |
KR (6) | KR101788948B1 (pt) |
CN (6) | CN103392339B (pt) |
AU (2) | AU2012220639B2 (pt) |
BR (2) | BR112013021617A2 (pt) |
CA (2) | CA2830381C (pt) |
DK (2) | DK2679009T3 (pt) |
ES (3) | ES2824831T3 (pt) |
HU (2) | HUE051435T2 (pt) |
IL (1) | IL227636A (pt) |
MX (1) | MX2013009722A (pt) |
MY (2) | MY166573A (pt) |
PL (2) | PL3796653T3 (pt) |
PT (1) | PT2679009T (pt) |
RU (2) | RU2579688C2 (pt) |
SG (2) | SG192743A1 (pt) |
SI (1) | SI2679009T1 (pt) |
TW (1) | TWI499267B (pt) |
UA (1) | UA110637C2 (pt) |
WO (4) | WO2012116090A1 (pt) |
ZA (2) | ZA201307111B (pt) |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
MX2009007274A (es) | 2007-01-05 | 2009-07-10 | Lg Electronics Inc | Metodo para mapeo de estrato y metodo de transmision de datos para sistema de entrada multiple salida multiple. |
US10123050B2 (en) | 2008-07-11 | 2018-11-06 | Qualcomm Incorporated | Filtering video data using a plurality of filters |
US9143803B2 (en) | 2009-01-15 | 2015-09-22 | Qualcomm Incorporated | Filter prediction based on activity metrics in video coding |
US8982960B2 (en) | 2011-02-23 | 2015-03-17 | Qualcomm Incorporated | Multi-metric filtering |
US9008180B2 (en) * | 2011-04-21 | 2015-04-14 | Intellectual Discovery Co., Ltd. | Method and apparatus for encoding/decoding images using a prediction method adopting in-loop filtering |
US9344742B2 (en) * | 2012-08-10 | 2016-05-17 | Google Inc. | Transform-domain intra prediction |
US20140056363A1 (en) * | 2012-08-23 | 2014-02-27 | Yedong He | Method and system for deblock filtering coded macroblocks |
CN104704827B (zh) | 2012-11-13 | 2019-04-12 | 英特尔公司 | 用于下一代视频的内容自适应变换译码 |
FR3011429A1 (fr) * | 2013-09-27 | 2015-04-03 | Orange | Codage et decodage video par heritage d'un champ de vecteurs de mouvement |
KR20150037371A (ko) * | 2013-09-30 | 2015-04-08 | 삼성전자주식회사 | 다이렉트 메모리 액세스(dma)를 이용하여 영상 신호를 처리하는 방법 및 장치. |
US9628822B2 (en) * | 2014-01-30 | 2017-04-18 | Qualcomm Incorporated | Low complexity sample adaptive offset encoding |
JP2017513312A (ja) * | 2014-03-14 | 2017-05-25 | シャープ株式会社 | 色空間スケーラビリティを用いたビデオ圧縮 |
CN104023241B (zh) * | 2014-05-29 | 2017-08-04 | 华为技术有限公司 | 帧内预测编码的视频编码方法及视频编码装置 |
US10057574B2 (en) | 2015-02-11 | 2018-08-21 | Qualcomm Incorporated | Coding tree unit (CTU) level adaptive loop filter (ALF) |
CN104918057B (zh) * | 2015-05-08 | 2018-07-13 | 上海交通大学 | 一种利用邻域运动信息的运动矢量后处理系统 |
RU2684193C1 (ru) * | 2015-05-21 | 2019-04-04 | Хуавэй Текнолоджиз Ко., Лтд. | Устройство и способ для компенсации движения в видеоизображении |
CN115134607A (zh) * | 2015-06-11 | 2022-09-30 | 杜比实验室特许公司 | 使用自适应去块滤波编码和解码图像的方法及其装置 |
CN107750459B (zh) * | 2015-06-18 | 2020-09-15 | Lg电子株式会社 | 图像编码系统中的基于图像特性的自适应滤波方法和装置 |
US10750170B2 (en) * | 2015-06-18 | 2020-08-18 | Lg Electronics Inc. | Image filtering method and device in image coding system |
CN105049846B (zh) * | 2015-08-14 | 2019-05-21 | 广东中星微电子有限公司 | 图像和视频编解码的方法和设备 |
CN106470341B (zh) | 2015-08-17 | 2020-10-02 | 恩智浦美国有限公司 | 媒体显示系统 |
US9883183B2 (en) * | 2015-11-23 | 2018-01-30 | Qualcomm Incorporated | Determining neighborhood video attribute values for video data |
KR101788183B1 (ko) * | 2015-12-28 | 2017-10-20 | 현대자동차주식회사 | 차량 및 그 제어방법 |
US11563938B2 (en) | 2016-02-15 | 2023-01-24 | Qualcomm Incorporated | Geometric transforms for filters for video coding |
US10382766B2 (en) | 2016-05-09 | 2019-08-13 | Qualcomm Incorporated | Signalling of filtering information |
US10419755B2 (en) * | 2016-05-16 | 2019-09-17 | Qualcomm Incorporated | Confusion of multiple filters in adaptive loop filtering in video coding |
EP3520402A4 (en) * | 2016-10-03 | 2019-09-18 | Sharp Kabushiki Kaisha | SYSTEMS AND METHOD FOR APPLYING DEFLECTION FILTERS IN RECONSTRUCTED VIDEO DATA |
US10572978B2 (en) * | 2016-12-05 | 2020-02-25 | Kennesaw State University Research And Service Foundation, Inc. | Moran's / for impulse noise detection and removal in color images |
JP2018182444A (ja) * | 2017-04-07 | 2018-11-15 | 株式会社Jvcケンウッド | 画像符号化装置、画像符号化方法及び画像符号化プログラム、画像復号装置、画像復号方法及び画像復号プログラム |
CN108737841B (zh) * | 2017-04-21 | 2020-11-24 | 腾讯科技(深圳)有限公司 | 编码单元深度确定方法及装置 |
US10225578B2 (en) | 2017-05-09 | 2019-03-05 | Google Llc | Intra-prediction edge filtering |
US10992939B2 (en) | 2017-10-23 | 2021-04-27 | Google Llc | Directional intra-prediction coding |
WO2019065261A1 (ja) * | 2017-09-27 | 2019-04-04 | ソニー株式会社 | 符号化装置、符号化方法、復号装置、及び、復号方法 |
US20190116359A1 (en) * | 2017-10-12 | 2019-04-18 | Qualcomm Incorporated | Guided filter for video coding and processing |
JP7390300B2 (ja) | 2017-11-01 | 2023-12-01 | ヴィド スケール インコーポレイテッド | ビデオコーディングにおける適応ループフィルタを簡略化する方法 |
CN108122268B (zh) * | 2017-12-19 | 2021-07-23 | 网易(杭州)网络有限公司 | 贴图处理方法和装置 |
US20190297603A1 (en) * | 2018-03-23 | 2019-09-26 | Samsung Electronics Co., Ltd. | Method and apparatus for beam management for multi-stream transmission |
US11889070B2 (en) * | 2018-03-23 | 2024-01-30 | Sharp Kabushiki Kaisha | Image filtering apparatus, image decoding apparatus, and image coding apparatus |
US11451773B2 (en) | 2018-06-01 | 2022-09-20 | Qualcomm Incorporated | Block-based adaptive loop filter (ALF) design and signaling |
CN112272951B (zh) * | 2018-06-13 | 2024-08-09 | 华为技术有限公司 | 用于视频编码的帧内锐化滤波器和/或去振铃滤波器 |
CN111107358B (zh) * | 2018-10-26 | 2024-07-30 | 北京字节跳动网络技术有限公司 | 块分割中的冗余降低 |
KR102622950B1 (ko) | 2018-11-12 | 2024-01-10 | 삼성전자주식회사 | 디스플레이장치, 그 제어방법 및 기록매체 |
CN113632467B (zh) * | 2018-11-14 | 2024-10-25 | 夏普株式会社 | 用于将解块滤波器应用于重构视频数据的系统和方法 |
US11051017B2 (en) | 2018-12-20 | 2021-06-29 | Qualcomm Incorporated | Adaptive loop filter (ALF) index signaling |
RU2737343C2 (ru) * | 2019-01-10 | 2020-11-27 | Федеральное государственное казенное военное образовательное учреждение высшего образования "Военный учебно-научный центр Военно-воздушных сил "Военно-воздушная академия имени профессора Н.Е. Жуковского и Ю.А. Гагарина" (г. Воронеж) Министерства обороны Российской Федерации | Способ определения характера движения объекта на кадрах видеопоследовательности |
US11070848B2 (en) * | 2019-06-24 | 2021-07-20 | Tencent America LLC | Method for efficient signaling of virtual boundary for loop filtering control |
CN113727116B (zh) * | 2021-07-21 | 2024-04-23 | 天津津航计算技术研究所 | 基于过滤机制的视频解码方法 |
CN113747171B (zh) * | 2021-08-06 | 2024-04-19 | 天津津航计算技术研究所 | 一种自恢复的视频解码方法 |
CN114598902B (zh) * | 2022-03-09 | 2023-12-22 | 安徽文香科技股份有限公司 | 一种视频帧处理方法、装置及电子设备 |
CN116260973B (zh) * | 2023-03-31 | 2024-03-19 | 北京百度网讯科技有限公司 | 一种时域滤波方法、装置、电子设备及存储介质 |
Family Cites Families (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS612482A (ja) | 1984-06-15 | 1986-01-08 | Mitsubishi Electric Corp | サブナイキスト標本化フイルタ |
CA1270322A (en) | 1983-12-22 | 1990-06-12 | Kotaro Asai | Adaptive comb filter |
JP2673778B2 (ja) | 1994-02-22 | 1997-11-05 | 国際電信電話株式会社 | 動画像の復号化における雑音低減装置 |
JPH0970044A (ja) | 1995-08-31 | 1997-03-11 | Sony Corp | 画像信号処理装置および方法 |
US5798795A (en) | 1996-03-01 | 1998-08-25 | Florida Atlantic University | Method and apparatus for encoding and decoding video signals |
US5844613A (en) * | 1997-03-17 | 1998-12-01 | Microsoft Corporation | Global motion estimator for motion video signal encoding |
KR100265722B1 (ko) | 1997-04-10 | 2000-09-15 | 백준기 | 블럭기반영상처리방법및장치 |
CN1288641A (zh) | 1998-09-22 | 2001-03-21 | 松下电器产业株式会社 | 视频信号编码方法、视频信号编码装置及程序记录媒体 |
US6421720B2 (en) | 1998-10-28 | 2002-07-16 | Cisco Technology, Inc. | Codec-independent technique for modulating bandwidth in packet network |
US6529638B1 (en) | 1999-02-01 | 2003-03-04 | Sharp Laboratories Of America, Inc. | Block boundary artifact reduction for block-based image compression |
US7003038B2 (en) | 1999-09-27 | 2006-02-21 | Mitsubishi Electric Research Labs., Inc. | Activity descriptor for video sequences |
FI117533B (fi) | 2000-01-20 | 2006-11-15 | Nokia Corp | Menetelmä digitaalisten videokuvien suodattamiseksi |
US7203234B1 (en) | 2000-03-31 | 2007-04-10 | Sharp Laboratories Of America, Inc. | Method of directional filtering for post-processing compressed video |
US7289154B2 (en) | 2000-05-10 | 2007-10-30 | Eastman Kodak Company | Digital image processing method and apparatus for brightness adjustment of digital images |
US6504872B1 (en) | 2000-07-28 | 2003-01-07 | Zenith Electronics Corporation | Down-conversion decoder for interlaced video |
US20030026495A1 (en) | 2001-03-07 | 2003-02-06 | Gondek Jay Stephen | Parameterized sharpening and smoothing method and apparatus |
DE10120395A1 (de) * | 2001-04-25 | 2002-10-31 | Bosch Gmbh Robert | Einrichtung zur Interpolation von Abtastwerten sowie Bildencoder und Bilddecoder |
US7266150B2 (en) | 2001-07-11 | 2007-09-04 | Dolby Laboratories, Inc. | Interpolation of video compression frames |
US20040247190A1 (en) | 2001-09-18 | 2004-12-09 | Makoto Hagai | Image encoding method and image decoding method |
US6983079B2 (en) | 2001-09-20 | 2006-01-03 | Seiko Epson Corporation | Reducing blocking and ringing artifacts in low-bit-rate coding |
ATE419713T1 (de) * | 2001-11-29 | 2009-01-15 | Panasonic Corp | Verfahren zur beseitigung von kodierungsverzerrung und verfahren zur videokodierung und -dekodierung |
KR100418437B1 (ko) | 2001-12-24 | 2004-02-14 | (주)씨앤에스 테크놀로지 | 멀티미디어 신호처리를 위한 영상복원 프로세서 |
WO2003058945A2 (en) | 2002-01-14 | 2003-07-17 | Nokia Corporation | Coding dynamic filters |
EP1333681A3 (en) | 2002-01-31 | 2004-12-08 | Samsung Electronics Co., Ltd. | Filtering method and apparatus for reducing block artifacts or ringing noise |
JP4102973B2 (ja) | 2002-04-24 | 2008-06-18 | 日本電気株式会社 | 動画像の符号化方法および復号化方法、これを用いた装置とプログラム |
DK1467491T3 (da) | 2002-05-02 | 2007-03-19 | Fraunhofer Ges Forschung | Arithmetical coding of transform coefficients |
AU2003246185A1 (en) | 2002-06-25 | 2004-01-06 | Matsushita Electric Industrial Co., Ltd. | Motion detection device and noise reduction device using that |
WO2004008773A1 (ja) | 2002-07-11 | 2004-01-22 | Matsushita Electric Industrial Co., Ltd. | フィルタリング強度の決定方法、動画像符号化方法、および動画像復号化方法 |
US7391812B2 (en) | 2002-07-14 | 2008-06-24 | Apple Inc. | Adaptively post filtering encoded video |
EP1603338A4 (en) | 2003-03-10 | 2007-12-05 | Mitsubishi Electric Corp | APPARATUS AND METHOD FOR VIDEO SIGNAL CODING |
US7430335B2 (en) | 2003-08-13 | 2008-09-30 | Apple Inc | Pre-processing method and system for data reduction of video sequences and bit rate reduction of compressed video sequences using spatial filtering |
US8625680B2 (en) | 2003-09-07 | 2014-01-07 | Microsoft Corporation | Bitstream-controlled post-processing filtering |
US7599438B2 (en) | 2003-09-07 | 2009-10-06 | Microsoft Corporation | Motion vector block pattern coding and decoding |
WO2005034517A1 (en) | 2003-09-17 | 2005-04-14 | Thomson Licensing S.A. | Adaptive reference picture generation |
US7822286B2 (en) | 2003-11-07 | 2010-10-26 | Mitsubishi Electric Research Laboratories, Inc. | Filtering artifacts in images with 3D spatio-temporal fuzzy filters |
US7437013B2 (en) | 2003-12-23 | 2008-10-14 | General Instrument Corporation | Directional spatial video noise reduction |
US7453938B2 (en) | 2004-02-06 | 2008-11-18 | Apple Inc. | Target bitrate estimator, picture activity and buffer management in rate control for video coder |
US8165389B2 (en) * | 2004-03-15 | 2012-04-24 | Microsoft Corp. | Adaptive interpolation with artifact reduction of images |
JP4468734B2 (ja) | 2004-04-27 | 2010-05-26 | オリンパス株式会社 | 映像信号処理装置と映像信号処理プログラム |
US7460596B2 (en) | 2004-04-29 | 2008-12-02 | Mediatek Incorporation | Adaptive de-blocking filtering apparatus and method for MPEG video decoder |
US20070230565A1 (en) | 2004-06-18 | 2007-10-04 | Tourapis Alexandros M | Method and Apparatus for Video Encoding Optimization |
EP1772017A2 (en) | 2004-07-20 | 2007-04-11 | Qualcomm Incorporated | Method and apparatus for encoder assisted-frame rate up conversion (ea-fruc) for video compression |
US20060028562A1 (en) | 2004-08-09 | 2006-02-09 | Martin Schmitz | Fast area-selected filtering for pixel-noise and analog artifacts reduction |
US7370126B2 (en) | 2004-11-03 | 2008-05-06 | Cisco Technology, Inc. | System and method for implementing a demand paging jitter buffer algorithm |
US7634148B2 (en) | 2005-01-07 | 2009-12-15 | Ntt Docomo, Inc. | Image signal transforming and inverse-transforming method and computer program product with pre-encoding filtering features |
EP1886502A2 (en) | 2005-04-13 | 2008-02-13 | Universität Hannover | Method and apparatus for enhanced video coding |
US7680355B2 (en) | 2005-05-02 | 2010-03-16 | Intel Corporation | Detection of artifacts resulting from image signal decompression |
US8422546B2 (en) | 2005-05-25 | 2013-04-16 | Microsoft Corporation | Adaptive video encoding using a perceptual model |
US20060285597A1 (en) | 2005-06-20 | 2006-12-21 | Flextronics International Usa, Inc. | Reusing interpolated values in advanced video encoders |
US8208564B2 (en) | 2005-06-24 | 2012-06-26 | Ntt Docomo, Inc. | Method and apparatus for video encoding and decoding using adaptive interpolation |
US7778169B2 (en) | 2005-09-02 | 2010-08-17 | Cisco Technology, Inc. | Packetizing media for a time slotted communication system |
US7894522B2 (en) | 2005-09-16 | 2011-02-22 | Sony Corporation | Classified filtering for temporal prediction |
JP4455487B2 (ja) | 2005-12-16 | 2010-04-21 | 株式会社東芝 | 復号化装置及び復号化方法及びプログラム |
EP2001239B1 (en) | 2006-03-27 | 2017-09-13 | Sun Patent Trust | Picture coding apparatus and picture decoding apparatus |
CN101491101B (zh) | 2006-07-18 | 2011-11-16 | 汤姆森许可贸易公司 | 用于自适应参考滤波的方法和装置 |
US8253752B2 (en) | 2006-07-20 | 2012-08-28 | Qualcomm Incorporated | Method and apparatus for encoder assisted pre-processing |
US8731064B2 (en) | 2006-09-11 | 2014-05-20 | Apple Inc. | Post-processing for decoder complexity scalability |
US20080075165A1 (en) | 2006-09-26 | 2008-03-27 | Nokia Corporation | Adaptive interpolation filters for video coding |
KR100900294B1 (ko) | 2006-11-09 | 2009-05-29 | 엘지전자 주식회사 | 비디오 신호의 디코딩/인코딩 방법 및 장치 |
RU2461977C2 (ru) | 2006-12-18 | 2012-09-20 | Конинклейке Филипс Электроникс Н.В. | Сжатие и снятие сжатия изображения |
EP2127391A2 (en) | 2007-01-09 | 2009-12-02 | Nokia Corporation | Adaptive interpolation filters for video coding |
KR100856551B1 (ko) * | 2007-05-31 | 2008-09-04 | 한국과학기술원 | H.264/avc에서의 디블록 필터 및 필터링 방법 |
WO2008148272A1 (en) | 2007-06-04 | 2008-12-11 | France Telecom Research & Development Beijing Company Limited | Method and apparatus for sub-pixel motion-compensated video coding |
US7965900B2 (en) * | 2007-09-26 | 2011-06-21 | Hewlett-Packard Development Company, L.P. | Processing an input image to reduce compression-related artifacts |
JP5427785B2 (ja) | 2007-09-28 | 2014-02-26 | ドルビー ラボラトリーズ ライセンシング コーポレイション | ビデオ圧縮技法及びビデオ伝達技法 |
EP2048886A1 (en) | 2007-10-11 | 2009-04-15 | Panasonic Corporation | Coding of adaptive interpolation filter coefficients |
CN101184221A (zh) * | 2007-12-06 | 2008-05-21 | 上海大学 | 基于视觉关注度的视频编码方法 |
CN101971632B (zh) * | 2008-01-08 | 2013-10-16 | 艾利森电话股份有限公司 | 自适应滤波 |
KR20100103822A (ko) * | 2008-01-14 | 2010-09-28 | 톰슨 라이센싱 | 다중 격자 성김-기반의 필터링을 사용하는 아티팩트 제거 필터링 방법 및 장치 |
US8831086B2 (en) | 2008-04-10 | 2014-09-09 | Qualcomm Incorporated | Prediction techniques for interpolation in video coding |
WO2009131508A2 (en) | 2008-04-23 | 2009-10-29 | Telefonaktiebolaget Lm Ericsson (Publ) | Template-based pixel block processing |
US10123050B2 (en) | 2008-07-11 | 2018-11-06 | Qualcomm Incorporated | Filtering video data using a plurality of filters |
US8290782B2 (en) | 2008-07-24 | 2012-10-16 | Dts, Inc. | Compression of audio scale-factors by two-dimensional transformation |
US8736751B2 (en) | 2008-08-26 | 2014-05-27 | Empire Technology Development Llc | Digital presenter for displaying image captured by camera with illumination system |
US8150191B2 (en) | 2008-10-14 | 2012-04-03 | Interra Systems Inc. | Method and system for calculating blur artifacts in videos using user perception threshold |
US8792564B2 (en) | 2008-10-28 | 2014-07-29 | Sony Corporation | Adaptive preprocessing method using feature-extracted video maps |
US8761538B2 (en) | 2008-12-10 | 2014-06-24 | Nvidia Corporation | Measurement-based and scalable deblock filtering of image data |
US9143803B2 (en) | 2009-01-15 | 2015-09-22 | Qualcomm Incorporated | Filter prediction based on activity metrics in video coding |
WO2010102935A1 (en) * | 2009-03-09 | 2010-09-16 | Thomson Licensing | Estimation of the prediction mode for the intra coding mode |
CN101854540B (zh) * | 2009-04-01 | 2014-07-02 | 辉达公司 | 用于应用h.264视频编码标准的帧内预测方法及装置 |
EP2262267A1 (en) | 2009-06-10 | 2010-12-15 | Panasonic Corporation | Filter coefficient coding scheme for video coding |
WO2011126759A1 (en) | 2010-04-09 | 2011-10-13 | Sony Corporation | Optimal separable adaptive loop filter |
US9094658B2 (en) * | 2010-05-10 | 2015-07-28 | Mediatek Inc. | Method and apparatus of adaptive loop filtering |
CN101945281B (zh) * | 2010-09-10 | 2014-09-10 | 中兴通讯股份有限公司 | 视频编码的滤波方法及装置 |
US8982960B2 (en) | 2011-02-23 | 2015-03-17 | Qualcomm Incorporated | Multi-metric filtering |
JP5818755B2 (ja) | 2012-08-23 | 2015-11-18 | 有限会社イザキ | 焼却灰保管方法およびこれに用いる焼却灰保管容器 |
-
2012
- 2012-02-21 US US13/401,548 patent/US8982960B2/en active Active
- 2012-02-21 US US13/401,573 patent/US8989261B2/en active Active
- 2012-02-21 US US13/401,552 patent/US8964852B2/en active Active
- 2012-02-21 US US13/401,685 patent/US8964853B2/en active Active
- 2012-02-22 WO PCT/US2012/026160 patent/WO2012116090A1/en active Application Filing
- 2012-02-22 KR KR1020157011552A patent/KR101788948B1/ko active IP Right Grant
- 2012-02-22 PL PL20183884.4T patent/PL3796653T3/pl unknown
- 2012-02-22 BR BR112013021617-4A patent/BR112013021617A2/pt not_active Application Discontinuation
- 2012-02-22 EP EP12706179.4A patent/EP2679008B1/en active Active
- 2012-02-22 DK DK12706180.2T patent/DK2679009T3/da active
- 2012-02-22 CA CA2830381A patent/CA2830381C/en active Active
- 2012-02-22 AU AU2012220639A patent/AU2012220639B2/en active Active
- 2012-02-22 JP JP2013555528A patent/JP5752812B2/ja active Active
- 2012-02-22 HU HUE12706180A patent/HUE051435T2/hu unknown
- 2012-02-22 JP JP2013555527A patent/JP5815755B2/ja active Active
- 2012-02-22 KR KR1020137024825A patent/KR101578986B1/ko active IP Right Grant
- 2012-02-22 CN CN201280010179.8A patent/CN103392339B/zh active Active
- 2012-02-22 SI SI201231846T patent/SI2679009T1/sl unknown
- 2012-02-22 SG SG2013061338A patent/SG192743A1/en unknown
- 2012-02-22 EP EP12706181.0A patent/EP2679010A1/en not_active Ceased
- 2012-02-22 PL PL12706180T patent/PL2679009T3/pl unknown
- 2012-02-22 UA UAA201311226A patent/UA110637C2/uk unknown
- 2012-02-22 ES ES12706180T patent/ES2824831T3/es active Active
- 2012-02-22 RU RU2013143011/08A patent/RU2579688C2/ru active
- 2012-02-22 CA CA2828406A patent/CA2828406C/en active Active
- 2012-02-22 KR KR1020157011601A patent/KR20150056663A/ko not_active Application Discontinuation
- 2012-02-22 BR BR112013021476A patent/BR112013021476A2/pt not_active Application Discontinuation
- 2012-02-22 CN CN201710243718.7A patent/CN107277525B/zh active Active
- 2012-02-22 CN CN201280015663.XA patent/CN103477639B/zh active Active
- 2012-02-22 RU RU2013142925/08A patent/RU2584961C2/ru active
- 2012-02-22 ES ES20183884T patent/ES2966390T3/es active Active
- 2012-02-22 DK DK12706179.4T patent/DK2679008T3/da active
- 2012-02-22 JP JP2013555530A patent/JP5815756B2/ja active Active
- 2012-02-22 KR KR1020137024783A patent/KR101552031B1/ko active IP Right Grant
- 2012-02-22 JP JP2013555529A patent/JP5897609B2/ja active Active
- 2012-02-22 MY MYPI2013002787A patent/MY166573A/en unknown
- 2012-02-22 EP EP19216610.6A patent/EP3687170A1/en active Pending
- 2012-02-22 EP EP12706178.6A patent/EP2679007A1/en not_active Ceased
- 2012-02-22 KR KR1020137024770A patent/KR101581098B1/ko active IP Right Grant
- 2012-02-22 MY MYPI2013003111A patent/MY167114A/en unknown
- 2012-02-22 ES ES12706179T patent/ES2816423T3/es active Active
- 2012-02-22 KR KR1020137024804A patent/KR101552032B1/ko active IP Right Grant
- 2012-02-22 PT PT127061802T patent/PT2679009T/pt unknown
- 2012-02-22 CN CN201710670800.8A patent/CN107396114B/zh active Active
- 2012-02-22 EP EP12706180.2A patent/EP2679009B1/en active Active
- 2012-02-22 CN CN201280010232.4A patent/CN103404142B/zh active Active
- 2012-02-22 AU AU2012220632A patent/AU2012220632B2/en active Active
- 2012-02-22 EP EP20183884.4A patent/EP3796653B1/en active Active
- 2012-02-22 MX MX2013009722A patent/MX2013009722A/es active IP Right Grant
- 2012-02-22 WO PCT/US2012/026154 patent/WO2012116088A1/en active Application Filing
- 2012-02-22 WO PCT/US2012/026166 patent/WO2012116095A1/en active Application Filing
- 2012-02-22 EP EP19216619.7A patent/EP3687171A1/en active Pending
- 2012-02-22 CN CN201280009765.0A patent/CN103380621B/zh active Active
- 2012-02-22 SG SG2013056502A patent/SG192123A1/en unknown
- 2012-02-22 HU HUE12706179A patent/HUE051433T2/hu unknown
- 2012-02-22 WO PCT/US2012/026165 patent/WO2012116094A1/en active Application Filing
- 2012-02-22 TW TW101105899A patent/TWI499267B/zh active
- 2012-02-22 EP EP20152795.9A patent/EP3700203A1/en not_active Withdrawn
-
2013
- 2013-07-24 IL IL227636A patent/IL227636A/en active IP Right Grant
- 2013-09-20 ZA ZA2013/07111A patent/ZA201307111B/en unknown
- 2013-09-20 ZA ZA2013/07110A patent/ZA201307110B/en unknown
-
2015
- 2015-01-08 US US14/592,826 patent/US9877023B2/en active Active
- 2015-01-08 US US14/592,841 patent/US9258563B2/en active Active
- 2015-07-28 JP JP2015148880A patent/JP6141917B2/ja active Active
- 2015-09-24 JP JP2015187236A patent/JP6105011B2/ja active Active
-
2016
- 2016-02-08 US US15/018,403 patent/US9819936B2/en active Active
-
2017
- 2017-05-08 JP JP2017092448A patent/JP6370960B2/ja active Active
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112013021617A2 (pt) | filtragem multimétrica | |
IL227994A (en) | Multi-metric filtering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B06F | Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette] | ||
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B15K | Others concerning applications: alteration of classification |
Free format text: AS CLASSIFICACOES ANTERIORES ERAM: H04N 7/26 , H04N 7/50 Ipc: H04N 19/117 (2014.01), H04N 19/14 (2014.01), H04N |
|
B350 | Update of information on the portal [chapter 15.35 patent gazette] | ||
B07A | Application suspended after technical examination (opinion) [chapter 7.1 patent gazette] | ||
B09B | Patent application refused [chapter 9.2 patent gazette] |