Postado por Monty (monty@xiph.org, cmontgomery@mozilla.com). Publicado 28 de junho de 2018.
Se alguém não leu o
artigo anterior ... AV1 é um novo codec de vídeo universal desenvolvido
pela Alliance for Open Media. A aliança tomou como base o codec VPX do Google, Thor da Cisco e Daala da Mozilla / Xiph.Org. O codec AV1 tem desempenho superior ao VP9 e HEVC, o que o torna um codec não amanhã, mas depois de amanhã. O formato AV1 é isento de royalties e permanecerá para sempre com uma licença de licenciamento.
Este artigo foi concebido como o segundo de uma série de artigos que descrevem em detalhes a funcionalidade do AV1 e as novas tecnologias subjacentes a ele e que são usadas pela primeira vez na produção. Um artigo anterior no Xiph.org explicou a função de previsão de brilho do Chroma da Luma (CfL) . Hoje vamos falar sobre um filtro de correção direcional limitado (filtro de aprimoramento direcional restrito). Se você sempre se perguntou o que é necessário para escrever um codec, aperte o cinto de segurança e prepare-se para a educação!Filtros no AV1
Em quase todos os codecs de vídeo, os filtros corretivos são usados para melhorar a qualidade subjetiva do material de saída.
Por "filtros corretivos", quero dizer métodos que não codificam necessariamente as informações da imagem ou melhoram a eficiência da codificação objetiva, mas melhoram o resultado de alguma maneira. Os filtros corretivos devem ser usados com cuidado, porque geralmente perdem algumas informações - e, por esse motivo, às vezes são considerados um método inaceitável de trapaça, para que o resultado pareça melhor do que realmente é.
Mas isso não é justo. Os filtros de correção são projetados para contornar ou eliminar artefatos específicos que são invisíveis às métricas objetivas, mas óbvias aos olhos humanos. E mesmo se considerarmos os filtros como uma forma de enganar, um bom codec de vídeo ainda precisa de todos os truques práticos e eficazes que ele pode usar.
Os filtros são divididos em várias categorias. Primeiro, eles podem ser
normativos ou
não normativos . O filtro normativo é uma parte necessária do codec; sem ele, é impossível decodificar o vídeo corretamente. Filtro não padronizado é opcional.
Em segundo lugar, os filtros diferem no local de aplicação. Existem filtros de
pré-processamento (pré-processamento) aplicados aos dados de entrada antes da codificação, filtros de
pós-processamento (pós-processamento) aplicados aos dados de saída após a conclusão da decodificação, bem como filtros in-loop, filtros de loop integrados ao processo de codificação. Os filtros de pré-processamento e pós-processamento geralmente não são padrão e não serão incluídos no codec. E os filtros de loop são normativos por definição. Isso faz parte do codec; eles são usados no processo de otimização da codificação e são aplicados a quadros de referência ou para codificação entre quadros.

O AV1 usa três filtros corretivos regulatórios. O primeiro é um filtro de desbloqueio para remover o "bloqueio" - artefatos óbvios ao longo das bordas dos blocos codificados. Embora o DCT seja relativamente adequado para comprimir energia em imagens naturais, ele ainda tende a acumular erros nas bordas dos blocos. Se você se lembra, a eliminação desses artefatos foi a
principal razão pela qual a Daala usou a transformação lapidada. Mas o AV1 é um codec mais tradicional com limites de bloco restritos. Como resultado, um filtro de desbloqueio tradicional é necessário aqui para suavizar os artefatos nas bordas dos blocos.
Um exemplo de artefato nos limites do bloco no codec de bloco DCT tradicional. Esses erros são especialmente visíveis.O último dos três filtros é o filtro de restauração de loop. É composto por dois filtros configuráveis e substituíveis: o
filtro Wiener e o
filtro auto-guiado. Esses são dois filtros convolucionais que tentam criar um kernel para restaurar parcialmente a qualidade perdida da imagem de entrada original. Eles geralmente são usados para redução e / ou correção de ruído nas bordas dos blocos. No caso do AV1, eles executam uma tarefa geral de redução de ruído, removendo o ruído DCT base através de desfoque ajustável.
Entre eles, há um
filtro de correção direcional limitado (Filtro de aprimoramento
direcional restrito , CDEF), sobre o qual falaremos. Como o filtro de loopback, ele remove artefatos e ruídos de base nas juntas, mas, diferentemente do filtro de loopback, é um filtro direcional. Diferentemente da maioria dos filtros, ele não se aplica a tudo em uma linha, mas localiza especificamente os limites do bloco. Portanto, o CDEF é especialmente interessante: é o primeiro filtro direcional prático e útil usado na codificação de vídeo.
Estrada longa e sinuosa
A história do CDEF não se desenvolveu facilmente. Este é um longo caminho com curvas, caminhos laterais e becos sem saída. O CDEF reúne vários trabalhos de pesquisa, cada um dos quais forneceu uma idéia ou inspiração para o filtro final no AV1.
O objetivo de transformar blocos de dados de pixel usando transformações do tipo DCT e DCT é representar um bloco de pixels com o menor número possível de números. O DCT comprime a energia razoavelmente bem na maioria das imagens, o que significa que tende a coletar padrões de pixels dispersos em apenas alguns fatores importantes de saída.
Mas há exceções à eficiência de compactação do DCT. Por exemplo, o DCT não converte bordas ou padrões direcionais muito bem. Se você observar a saída DCT de uma borda diagonal afiada, os coeficientes de saída também formarão ... uma diagonal afiada! Difere após a conversão, mas ainda está presente na imagem, embora geralmente em uma forma mais complexa do que no início. A compressão está baixa!
Limites nítidos são um problema tradicional para codecs baseados em DCT, pois eles não são muito compactados, se é que existem. Aqui vemos uma borda nítida (esquerda) e os coeficientes de transformação DCT (direita). A energia do limite inicial se propaga através do DCT para o padrão de ondulações direcionais.Nas últimas duas décadas, a pesquisa de codecs de vídeo cada vez mais analisou transformações, filtros e métodos de previsão, que são essencialmente direcionais. Os pesquisadores estão procurando uma maneira de lidar melhor com essas fronteiras e padrões para corrigir essa limitação fundamental da DCT.
Preditores direcionais clássicos
A intra-previsão direcional é provavelmente um dos métodos mais famosos de ação direcional nos codecs de vídeo modernos. Todos estão familiarizados com os modos de previsão direcional h.264 e VP9, nos quais o codec transfere a previsão de um padrão específico para um novo bloco com base nos pixels adjacentes dos blocos já decodificados. O objetivo é remover (ou reduzir significativamente) a energia em arestas duras e direcionadas
antes de converter o bloco. Ao prever e remover recursos que não podem ser compactados, aumentamos a eficiência geral do codec.
Ilustração dos modos de previsão direcional no AVC / H.264 para blocos 4x4. O preditor expande os valores das tiras de pixel único dos pixels vizinhos, transferindo-os para o bloco previsto em uma das oito direções, além de um modo de média para previsão simples de DCUma idéia ainda mais antiga é a compensação de movimento. Essa também é uma forma de previsão direcional, embora raramente pensemos dessa maneira. Esse modo muda os blocos em determinadas direções, novamente para prever e extrair energia antes da execução do DCT. Esse deslocamento do bloco é direcional e filtrado. Assim como a predição direcional, ela aplica filtros de superamostragem cuidadosamente construídos se o deslocamento não for um número inteiro de pixels.
Filtros direcionais
Como observado anteriormente, os codecs de vídeo aplicam ativamente filtros para remover artefatos e ruídos de blocos. Embora os filtros sejam aplicados no plano 2D, eles geralmente funcionam em 1D, ou seja, são executados horizontal e verticalmente separadamente.
A filtragem direcional aciona os filtros em direções diferentes da horizontal e vertical. Esse método já é comum no processamento de imagens estáticas, onde filtros de redução de ruído e sobreposições de efeitos especiais geralmente levam em conta limites e direções. Mas esses filtros direcionais geralmente são baseados na filtragem da saída de transformações direcionais. Por exemplo, os
filtros de redução de ruído [ligeiramente obsoletos] sobre
os quais escrevi são baseados em uma
árvore dupla de wavelets complexas .
Mas para a codificação de vídeo, estamos mais interessados em filtros direcionais, que são aplicados diretamente em pixels em uma determinada direção, em vez de filtrar o domínio da frequência na saída de uma conversão direcional. Assim que você tentar criar uma fera assim, a Grande Questão surgirá rapidamente: como formalizar uma certa direção que não seja horizontal e vertical, quando as posições do filtro não estão mais ligadas aos pixels da grade?
Uma opção é usar a abordagem clássica usada no processamento de imagem de alta qualidade: transformar o núcleo do filtro e provar novamente (redimensionar) o espaço em pixels, conforme necessário. Você pode até argumentar que esta é a única resposta "correta" ou "completa". É usado na compensação do movimento do subpixel, onde é impossível obter um bom resultado sem uma nova amostragem, bem como na previsão direcional, onde geralmente é usada uma aproximação rápida.
No entanto, mesmo uma aproximação rápida é cara em termos de recursos computacionais, se aplicada universalmente, por isso é aconselhável evitar a re-amostragem, se possível. O preço caro da velocidade é uma das razões pelas quais os filtros direcionais ainda não foram aplicados na codificação de vídeo.
Transformações direcionais
Conversões direcionais tentam corrigir problemas de DCT com compactação de borda de bloco no nível da própria transformação.
As experiências nessa área se enquadram em duas categorias. Há transformações que usam bases essencialmente direcionais, como wavelets direcionais. Como regra, eles são propensos a conversão excessiva / excesso de completude, ou seja, eles produzem mais saída do que recebem na entrada: geralmente muito mais. É como trabalhar na direção oposta, porque queremos
reduzir a quantidade de dados, não aumentá-la! Mas essas conversões ainda comprimem energia, e o codificador ainda seleciona um pequeno subconjunto da saída para codificação; portanto, na realidade, existem algumas diferenças em relação à codificação DCT com perda usual. No entanto, as conversões "sobrecarregadas" geralmente exigem uma quantidade excessiva de memória e recursos de computação e, portanto, não são usadas em codecs de vídeo populares.
A segunda categoria de conversões direcionais realiza transformações regulares não direcionadas, como o DCT - e as modifica, afetando a entrada ou a saída. As alterações podem ser realizadas na forma de amostragem repetida, multiplicação de matrizes (que pode ser considerada uma forma especializada de amostragem repetida) ou malabarismo com a ordem dos dados de entrada.
Essa última idéia é a mais forte, porque o método funciona rapidamente. Uma permutação simples de números não requer cálculos matemáticos.
Dois exemplos de transformações em diferentes direções, reorganizando pixels e coeficientes, em vez de um re-filtro. Um exemplo é retirado da Pesquisa de transformações direcionais em codificação de imagens , Jicheng Xu, Bing Zeng, Feng WuA implementação é complicada por várias dificuldades práticas. A reorientação do quadrado fornece uma aresta diagonal com linhas predominantemente verticais ou horizontais, o que leva a uma matriz não quadrada de números como entrada. Conceitualmente, isso não é um problema. Como você pode começar a transformar linhas e colunas independentemente uma da outra, simplesmente usamos tamanhos diferentes de 1D DCT para cada linha e coluna, conforme mostrado na figura acima. Mas, na prática, isso significa que precisaremos de fatoração DCT diferente para cada comprimento de coluna possível - e assim que o departamento de desenvolvimento de hardware entender isso, você será expulso da janela.
Existem outras maneiras de processar áreas não quadradas após o rearranjo.Você pode criar esquemas de reamostragem que salvam o quadrado de entrada ou funcionam apenas na saída. A maioria dos
artigos sobre conversão direcional listados abaixo oferece esquemas diferentes para isso.
E é aí que a história das transformações direcionadas termina essencialmente. Assim que você contorna várias complicações das conversões direcionais e cria um filtro real, normalmente ele não funciona em um codec moderno por um motivo inesperado: devido à concorrência com um tamanho de bloco variável. Ou seja, em um codec com um tamanho fixo de bloco, a adição de transformações direcionais fornece um aumento impressionante na eficiência. E um tamanho de bloco variável por si só oferece benefícios ainda maiores. Mas combinar um tamanho de bloco variável e transformações direcionais leva a um resultado pior do que usar cada um desses métodos individualmente. O tamanho do bloco variável já eliminou as redundâncias que são usadas pelas transformações direcionais e até o tornou mais eficiente.
Nathan Egge e eu experimentamos muitas transformações direcionais ao desenvolver o Daala. Examinei o problema no lado de entrada e no lado de saída, usando multiplicações esparsas de matriz para converter bordas diagonais em posição vertical / horizontal na saída. Nathan testou abordagens conhecidas para transformações direcionais reconstruindo dados de entrada. Chegamos a uma conclusão: a complexidade adicional não oferece benefícios objetivos ou subjetivos.
O uso de transformações direcionais no Daala (e em outros codecs) pode ser um erro, mas a pesquisa levantou uma questão mencionada anteriormente: como filtrar rapidamente ao longo das fronteiras sem re-amostragem dispendiosa? Resposta: não há necessidade de voltar a amostrar. Aumente o zoom movendo o pixel inteiro mais próximo. Aumente o zoom no kernel transformado, rearranjando literal ou conceitualmente os pixels. Essa abordagem leva a alguma distorção (aliasing), mas funciona
muito bem e
rápido o suficiente .
Preditores Direcionais, Parte 2: Crônicas de Daala
A história do CDEF no codec Daala começou com tentativas de fazer algo completamente diferente: a intradição direcional entediante usual. Ou pelo menos algo normal para o codec Daala.
Escrevi sobre o
esquema intra-predição de Daala no domínio da frequência quando estávamos começando a trabalhar nele. A matemática aqui está funcionando bastante; não há razão para se preocupar. No entanto, a implementação ingênua exigiu um grande número de multiplicações de matrizes, o que era muito caro para o codec em produção. Esperávamos que a carga computacional pudesse ser reduzida em uma ordem de magnitude devido à rarefação - eliminação de elementos da matriz que não contribuíram muito para a previsão.
Mas o desbaste não funciona como gostaríamos. Pelo menos quando o implementamos, ele perdeu muita informação, tornando a técnica inadequada na prática.
Obviamente, Daala ainda precisava de alguma forma de predição interna, e Jean-Marc Valin teve uma idéia: um codec de previsão autônomo que funciona no domínio espacial paralelo ao codec Daala no domínio da frequência. Como um tipo de simbionte, trabalhando em conjunto, mas não dependente do Daala, não se limita aos requisitos do Daala para o domínio da frequência. Foi assim que o
Intra Paint surgiu.
Um exemplo do algoritmo de previsão do Intra Paint em uma fotografia de Sydney Harbour . A saída visual é claramente direcional, se encaixa bem com os limites dos blocos e os recursos da imagem original, criando um bom resultado (talvez um pouco estranho) com limites clarosO filtro Intra Paint funcionou de uma nova maneira: codificou vetores unidimensionais apenas ao longo dos limites dos blocos e, em seguida, executou o modelo na direção selecionada. É como pulverizar tinta e depois espalhá-la em diferentes direções em áreas abertas.
O Intra Paint parecia promissor e, por si só, produziu resultados surpreendentemente belos, mas, novamente, mostrou-se insuficientemente eficaz para funcionar como um intra-preditor padrão. Apenas não recebeu bits suficientes para codificar suas próprias informações.
A diferença entre a fotografia original do porto de Sydney e o resultado do Intra Paint. Apesar da emissão visualmente agradável do Intra Paint, objetivamente, ele não pode ser chamado de um preditor altamente preciso. A diferença é bastante significativa mesmo em muitas fronteiras que pareciam bem criadasO "fracasso" do Intra Paint nos levou a outra idéia. Embora esse "desenho" não seja objetivamente um bom preditor, mas subjetivamente, na maioria das vezes, parece bom. Talvez use o método "mancha de tinta" como um filtro de pós-processamento para melhorar a qualidade visual subjetiva? O Intra Paint segue muito bem as bordas afiadas e, portanto, deve potencialmente eliminar o ruído que se acumula nas bordas mais nítidas.
A partir dessa idéia, nasceu o filtro Paint-Dering original em Daala, o que acabou levando ao próprio CDEF.Há outra coisa interessante na previsão direcional, embora atualmente esse seja um beco sem saída na codificação de vídeo. David Shlif implementa um interessante filtro de busca / borda / direção chamado Interpolação Direcionada por Borda(EDI). Outros codecs (como a série VPx e, em algum momento, o AV1) experimentaram quadros de referência reduzidos para economizar bits de codificação e aumentar a resolução. Esperávamos que, com maior resolução, a interpolação EDI significativamente melhorada melhorasse a técnica a ponto de ser útil. Também esperávamos usar o EDI como um filtro de interpolação de sub-pixel aprimorado para compensar o movimento. Infelizmente, essas idéias continuaram sendo um sonho não realizado.Furos de preenchimento, mesclagem de ramos
No momento, descrevi todos os pré-requisitos básicos necessários para abordar o CDEF, mas, na realidade, continuamos a passear no deserto. O Intra Paint gerou o filtro Daala Paint-Dering original, que usava o algoritmo Intra-Paint como um pós-filtro para eliminar artefatos. Acabou sendo muito lento para usar em um codec real.Como resultado, levamos em conta as lições do Intra Paint e abandonamos os experimentos nessa direção. A Daala pegou emprestado o CLPF de Thor por um tempo e, em seguida, Jean-Marc criou outro filtro Deringing, muito mais rápido, para a Daala, com base na pesquisa de direções dos limites do Intra-Paint (funcionou rápida e bem), bem como no Filtro de Substituição Condicional, filtro de substituição condicional. O CRF foi criado de algum modo com as idéias de um filtro mediano e produziu resultados semelhantes a um filtro bilateral, mas funcionou essencialmente em vetores e, portanto, muito mais rápido. Comparação de um filtro linear de 7 derivações com um filtro de substituição condicional em um sinal unidimensional ruidoso, em que o ruído imita os efeitos da quantização no sinal original O filtro final de redução de ruído Daala usa dois filtros CRF unidimensionais, um filtro de 7 derivações na direção dos limites e um filtro de 5 derivações fraco. Ambos os filtros funcionam apenas em pixels inteiros sem nova amostragem. Aqui, o filtro de redução de ruído da Daala se torna muito semelhante ao que conhecemos agora como CDEF.
Recentemente, propusemos o Daala como o codec AOM, e esse filtro intermediário tornou-se um experimento AV1 daala_dering. A Cisco também introduziu seu filtro de redução de ruído, o filtro restrito de passa-baixo (CLPF) do codec Thor. Por um tempo, ambos os filtros existiram em paralelo na montagem experimental AV1: eles poderiam ser incluídos individualmente ou até juntos. Graças a isso, em seu trabalho foi possível perceber sinergias úteis, bem como semelhanças adicionais de filtros em diferentes etapas do trabalho.Então, finalmente chegamos ao CDEF : o filtro CLPF da Cisco e a segunda versão do filtro de redução de ruído Daala se fundiram em um filtro de redução de ruído de alto desempenho, levando em consideração a direção dos limites.CDEF moderno
O filtro CDEF é simples e muito semelhante aos nossos filtros anteriores. Consiste em três partes (pesquisa direcional, filtro de substituição limitada / passa-baixo e posicionamento das marcas de co-pixel) que usamos anteriormente. Dado o longo histórico, olhando para o CDEF finalizado, você pode perguntar: “Isso é tudo? Onde está o resto? CDEF é um exemplo de como obter um efeito útil devido à implementação correta de peças, e não devido à complexidade. Um filtro simples e eficaz é o que deveria ser.Direção da pesquisa
O CDEF trabalha em uma determinada direção, então você precisa defini-lo. O algoritmo é o mesmo que o Intra Paint e o Paint-Dering. Existem oito direções possíveis. Oito direções possíveis para um filtro CDEF. As linhas numeradas em cada bloco de direção correspondem ao parâmetro 'k' na busca de direção
Determinamos a direção do filtro criando variantes “direcionais” do bloco de entrada, uma para cada direção, onde todos os pixels ao longo da linha na direção selecionada são trazidos para o mesmo valor. Em seguida, escolhemos a direção em que o resultado mais se aproxima do bloco de origem. Ou seja, para cada direção d, encontramos primeiro o valor médio do pixel em cada linha k e, em seguida, ao longo de cada linha, resumimos o erro quadrático entre o valor do pixel fornecido e o valor médio dessa linha de pixels.
d, . k . k . , , . /Portanto, obtemos o erro quadrático total e o menor erro quadrático comum é a direção que escolheremos. Embora o exemplo acima faça exatamente isso, na realidade não é necessário converter o erro quadrático em dispersão: em cada direção o mesmo número de pixels, então ambos escolherão a mesma resposta. Menos computação!Essa é uma maneira intuitiva e longa de calcular erros direcionais. A usinagem pode ser simplificada pela seguinte equação:Nesta fórmula .
Esta equação pode ser simplificada na prática. Por exemplo, o primeiro termo é o mesmo para cada .
Por fim, a implementação do AV1 CDEF atualmente requer 5.875 adições e 1.9375 multiplicações por pixel e é profundamente vetorizada, resultando em um custo total inferior a 8 × 8 DCT.Torneiras de filtro
O filtro CDEF trabalha pixel por pixel em um bloco completo. DireçãoA direção dos filtros unidimensionais primários e secundários em relação à direção selecionada d. O filtro principal inicia na direção selecionada, os secundários trabalham em um ângulo de 45 ° com a direção principal. Cada pixel no bloco é filtrado igualmente.Osfiltros funcionam em ângulos que as marcas ideais geralmente caem entre os pixels. Em vez de realizar uma nova amostragem, selecionamos a localização exata do pixel mais próximo, levando em consideração o núcleo simétrico do filtro.Cada etiqueta no filtro também tem o mesmo peso. Durante a filtragem, seu valor de entrada é fornecido à entrada, a função de restrição é aplicada, o resultado é multiplicado pelo peso fixo do rótulo e esse valor de saída é adicionado ao pixel filtrado.
Os locais das marcas primárias e secundárias (derivações) e pesos fixos (w) nas direções do filtro. Para marcas primárias e valores pares de força a = 2 eb = 4, enquanto para marcas ímpares a = 3 eb = 3. O pixel filtrado é mostrado em cinza.Naprática, os filtros primário e secundário não funcionam separadamente, mas são combinados em um núcleo de filtro, que é realizado em uma etapa.Função de restrição
O CDEF usa um filtro passa-baixo limitado no qual o valor de cada rótulo é processado pela função de restrição com o parâmetro de diferença entre o valor do rótulo e o pixel filtrado :
A função de restrições foi projetada para reduzir ou abandonar completamente o processamento de pixels que não são muito diferentes dos pixels filtrados. No intervalo definido, as diferenças nos valores das marcas do pixel central são completamente levadas em consideração (que é determinada pelo parâmetro force e


e
Resultados
O CDEF foi projetado para remover ou reduzir o ruído básico e os artefatos de toque nas bordas nítidas de uma imagem sem desfocar ou danificar. O filtro agora é usado no AV1 e fornece um efeito sutil, mas consistente. Talvez no futuro seja possível contar ainda mais com o CDEF.
Um exemplo de redução de ruído e artefatos ao codificar imagens de Frutas . A primeira inserção mostra a área sem processamento CDEF, a segunda mostra a mesma área após o processamento CDEFO valor quantitativo de qualquer filtro corretivo
deve ser determinado por testes subjetivos. As métricas de objetivo não devem ser descontadas, mas o CDEF foi projetado para fornecer um resultado que vai além dos recursos de ferramentas de teste de objetivo primitivo, como PSNR e SSIM.
Assim, realizamos várias rodadas de testes subjetivos, primeiro durante o desenvolvimento do CDEF (quando Daala Dering e Thor CLPF ainda eram tecnicamente concorrentes) e, em seguida, realizamos testes mais abrangentes do filtro CDEF combinado. Como esse é um novo filtro que está completamente ausente nas gerações anteriores de codecs, os testes consistiram principalmente no AV1 com CDEF ativado e AV1 sem CDEF.
Resultados de teste subjetivos AV1 A / B com CDEF e AV1 sem CDEF para configuração de alta latênciaOs resultados subjetivos mostram uma melhora estatisticamente significativa (p <0,05) em três dos seis clipes. Como regra, isso corresponde a um aumento na eficiência da codificação em 5-10%. Esta é uma grande vitória para uma ferramenta adicionada a um codec totalmente maduro.
Como esperado, o teste objetivo mostrou um aumento mais modesto de cerca de 1%, mas o teste objetivo é útil apenas na medida em que é consistente com os resultados subjetivos. O teste subjetivo é o padrão-ouro e os resultados subjetivos são bastante claros.
Os testes também mostraram que o CDEF tem um desempenho melhor se ferramentas de codec adicionais forem desativadas durante a codificação. Como as transformações direcionais, o CDEF concorre por benefícios com outros métodos AV1 mais complexos. Como o CDEF é um filtro simples, pequeno e rápido, ele pode ser usado no futuro para reduzir a complexidade dos codificadores AV1. Em termos de complexidade do decodificador, o CDEF representa 3% a 10% do decodificador AV1, dependendo da configuração.
Recursos Adicionais
- Xiph.Org suítes de teste derf padrão em media.xiph.org
- Sistema de teste automatizado e métricas usadas no desenvolvimento do Daala e AV1: "Já estamos compactados?"
- Filtro de aprimoramento direcional restrito (CDEF) no AV1 . Steinar Midtskogen, Jean-Marc Valin, outubro de 2017
- Slides de apresentação do CDEF para ICASSP 2018 , Steinar Midtskogen, Jean-Marc Valin
- Filtro anti-derrapante para Daala e desenvolvimento adicional . Jean-Marc Valin. O filtro de redução de ruído anterior criado ao desenvolver o codec Daala, que foi usado para criar o CDEF no AV1.
- Daala: Colorir imagens por diversão e bem . Jean-Marc Valin. Um filtro de correção ainda mais antigo para a base Intra-Paint, que levou à criação de um filtro de redução de ruído em Daala, que por sua vez levou ao CDEF
- Filtro Deringing Intra Paint . Jean-Marc Valin, 2015. Notas sobre o filtro de correção de redução de ruído que surgiu no experimento Intra Paint em Daala
- Filtragem de imagem guiada . Caiming Hye, Jian San, Xiaou Tang, 2013
- Transformada de wavelet discreta adaptativa direcional para compactação de imagem . Chuo-Ling Chang, Bernd Girod, transações do IEEE sobre processamento de imagens, volume 16, número 5, maio de 2007
- Transformações direcionais adaptáveis para compartilhamento de imagens . Chuo-Ling Chang, tese de doutorado na Universidade de Stanford, 2009. Esta dissertação fornece uma boa visão geral da área de transformações direcionais a partir de 2009; Infelizmente, não havia cópias disponíveis online
- Conversão de bloqueio adaptativo direcional para codificar uma imagem colorida . Chuo-Ling Chang, Mina Makar, Sam S. Tsai, Bernd Girod, Transações do IEEE sobre processamento de imagens, Volume 19, Número 7, Número 7, Julho de 2010
- DCT baseado em circuito com previsão de CC e codificação adaptativa . Zhibo Chen, Xiaozhong Xu. O artigo por trás do IEEE
- Transformações direcionais adaptativas para previsão de codificação residual . Robert Cohen, Sven Klomp, Anthony Vetro e Huifan Sun. Anais da 17ª Conferência Internacional IEEE de 2010 sobre Processamento de Imagens, 26 a 29 de setembro de 2010, Hong Kong
- Transformação ortogonal de orientação seletiva com sobreposição . Dietmar Kunz, 2008. Artigo de IEEE
- Análise de distorção de velocidade de wavelets direcionais . Arian Maleki, Boshra Rajay, Hamid Reza Purreza. Transações IEEE sobre Processamento de Imagens, Volume 21, Número 2, Fevereiro de 2012
- Análise teórica das tendências nas tendências em transformações ortogonais direcionais . Shogo Murumatsu, Dandan Khan, Tomoya Kobayashi e Hisakazu Kikuchi. Um artigo por trás do paywall do IEEE. No entanto, uma versão curta está disponível gratuitamente.
- Uma visão geral das transformações direcionais na codificação de imagens . Jicheng Xu, Bing Zeng, Feng Wu.
- Conversão com filtragem direcional para compactação de imagem e informações entre quadros . Xulian Peng, Jicheng Xu, Feng Wu, transação do IEEE em processamento de imagens, volume 19, número 11, novembro de 2010. Artigo por IEEE Firewall
- Aproximação e compressão usando transformações ortonormais esparsas . O. G. Sezer, O. G. Guleruz, Yusel Altunbasak, 2008
- Estudo confiável de transformações compartilhadas bidimensionais para codecs de vídeo da próxima geração . O. G. Cezer, R. Cohen, A. Vetro, março de 2011
- Otimização das articulações com base na escassez de um conjunto de transformações de blocos compartilhados bidimensionais ortonormais . Joel Sole, Peng Yin, Yunfei Zheng, Christina Gomila, 2009. Artigo por IEEE
- Transformações direcionais sobrepostas para codificação de imagens . Jicheng Xu, Feng Wu, Jie Liang, Wenjun Zhang, transações do IEEE sobre processamento de imagens, abril de 2008
- As transformações de cosseno discretas direcionais são uma nova estrutura para a codificação de imagens . Bing Zeng, Jingjing Fu, transações IEEE em circuitos e sistemas para tecnologia de vídeo, abril de 2008
- Árvore dupla de transformações complexas de wavelets . Ivan Seleznik, Richard Baranyuk, Nick Kingsbury, IEEE Signal Processing Magazine, novembro de 2005