Compressão de dados

Ajustar Compartir Imprimir Citar
Codificação compacta de dados digitais

Na teoria da informação, compressão de dados, codificação de origem ou redução da taxa de bits é o processo de codificação de informações usando menos bits do que o representação originária. Qualquer compactação específica é com perdas ou sem perdas. A compactação sem perdas reduz os bits identificando e eliminando a redundância estatística. Nenhuma informação é perdida na compactação sem perdas. A compactação com perdas reduz os bits removendo informações desnecessárias ou menos importantes. Normalmente, um dispositivo que executa a compactação de dados é chamado de codificador e aquele que realiza a reversão do processo (descompactação) como decodificador.

O processo de redução do tamanho de um arquivo de dados geralmente é chamado de compactação de dados. No contexto da transmissão de dados, é chamado de codificação de origem; codificação feita na fonte dos dados antes de serem armazenados ou transmitidos. A codificação de origem não deve ser confundida com a codificação de canal, para detecção e correção de erros ou codificação de linha, os meios para mapear dados em um sinal.

A compactação é útil porque reduz os recursos necessários para armazenar e transmitir dados. Recursos computacionais são consumidos nos processos de compressão e descompressão. A compressão de dados está sujeita a uma compensação de complexidade espaço-tempo. Por exemplo, um esquema de compactação para vídeo pode exigir hardware caro para que o vídeo seja descompactado rápido o suficiente para ser visualizado enquanto está sendo descompactado, e a opção de descompactar o vídeo por completo antes de assisti-lo pode ser inconveniente ou exigir armazenamento adicional. O projeto de esquemas de compactação de dados envolve compensações entre vários fatores, incluindo o grau de compactação, a quantidade de distorção introduzida (ao usar compactação de dados com perdas) e os recursos computacionais necessários para compactar e descompactar os dados.

Sem perdas

Os algoritmos de compactação de dados sem perdas geralmente exploram a redundância estatística para representar dados sem perder nenhuma informação, de modo que o processo seja reversível. A compactação sem perdas é possível porque a maioria dos dados do mundo real exibe redundância estatística. Por exemplo, uma imagem pode ter áreas coloridas que não mudam ao longo de vários pixels; em vez de codificar "pixel vermelho, pixel vermelho,..." os dados podem ser codificados como "279 pixels vermelhos". Este é um exemplo básico de codificação run-length; existem muitos esquemas para reduzir o tamanho do arquivo eliminando a redundância.

Os métodos de compactação Lempel–Ziv (LZ) estão entre os algoritmos mais populares para armazenamento sem perdas. DEFLATE é uma variação de LZ otimizada para velocidade de descompressão e taxa de compressão, mas a compressão pode ser lenta. Em meados da década de 1980, seguindo o trabalho de Terry Welch, o algoritmo Lempel-Ziv-Welch (LZW) rapidamente se tornou o método de escolha para a maioria dos sistemas de compressão de uso geral. LZW é usado em imagens GIF, programas como PKZIP e dispositivos de hardware como modems. Os métodos LZ usam um modelo de compactação baseado em tabela em que as entradas da tabela são substituídas por cadeias de dados repetidas. Para a maioria dos métodos LZ, esta tabela é gerada dinamicamente a partir de dados anteriores na entrada. A tabela em si geralmente é codificada por Huffman. Códigos baseados em gramática como este podem compactar entrada altamente repetitiva de forma extremamente eficaz, por exemplo, uma coleção de dados biológicos da mesma espécie ou de espécies próximas, uma enorme coleção de documentos com versão, arquivamento na Internet, etc. A tarefa básica de códigos baseados em gramática é construir uma gramática livre de contexto derivando uma única string. Outros algoritmos práticos de compactação gramatical incluem Sequitur e Re-Pair.

Os compressores sem perdas modernos mais fortes usam modelos probabilísticos, como previsão por correspondência parcial. A transformada de Burrows-Wheeler também pode ser vista como uma forma indireta de modelagem estatística. Em um refinamento adicional do uso direto da modelagem probabilística, as estimativas estatísticas podem ser acopladas a um algoritmo chamado codificação aritmética. A codificação aritmética é uma técnica de codificação mais moderna que usa os cálculos matemáticos de uma máquina de estado finito para produzir uma sequência de bits codificados a partir de uma série de símbolos de dados de entrada. Ele pode alcançar compressão superior em comparação com outras técnicas, como o algoritmo de Huffman mais conhecido. Ele usa um estado de memória interna para evitar a necessidade de executar um mapeamento um-para-um de símbolos de entrada individuais para representações distintas que usam um número inteiro de bits e limpa a memória interna somente após codificar toda a sequência de símbolos de dados. A codificação aritmética se aplica especialmente bem a tarefas de compressão de dados adaptativos em que as estatísticas variam e dependem do contexto, pois pode ser facilmente acoplada a um modelo adaptativo da distribuição de probabilidade dos dados de entrada. Um dos primeiros exemplos do uso de codificação aritmética estava em um recurso opcional (mas não amplamente utilizado) do padrão de codificação de imagem JPEG. Desde então, foi aplicado em vários outros projetos, incluindo H.263, H.264/MPEG-4 AVC e HEVC para codificação de vídeo.

O software de arquivamento normalmente tem a capacidade de ajustar o "tamanho do dicionário", onde um tamanho maior exige mais memória de acesso aleatório durante a compactação e descompactação, mas compacta mais forte, especialmente em padrões repetidos em arquivos' contente.

Com perdas

MP3, um exemplo de um formato de arquivo perdido em comparação com WAV.

No final da década de 1980, as imagens digitais tornaram-se mais comuns e surgiram os padrões para compactação de imagens sem perdas. No início dos anos 90, os métodos de compressão com perdas começaram a ser amplamente utilizados. Nesses esquemas, alguma perda de informação é aceita, pois a eliminação de detalhes não essenciais pode economizar espaço de armazenamento. Há um trade-off correspondente entre a preservação da informação e a redução do tamanho. Os esquemas de compactação de dados com perdas são projetados por pesquisas sobre como as pessoas percebem os dados em questão. Por exemplo, o olho humano é mais sensível a variações sutis de luminância do que a variações de cor. A compactação de imagem JPEG funciona em parte arredondando informações não essenciais. Vários formatos populares de compressão exploram essas diferenças de percepção, incluindo psicoacústica para som e psicovisual para imagens e vídeo.

A maioria das formas de compactação com perdas é baseada na codificação de transformação, especialmente a transformação discreta de cosseno (DCT). Foi proposto pela primeira vez em 1972 por Nasir Ahmed, que então desenvolveu um algoritmo de trabalho com T. Natarajan e K. R. Rao em 1973, antes de apresentá-lo em janeiro de 1974. DCT é o método de compressão com perdas mais amplamente utilizado e é usado em formatos multimídia para imagens (como JPEG e HEIF), vídeo (como MPEG, AVC e HEVC) e áudio (como MP3, AAC e Vorbis).

A compactação de imagem com perdas é usada em câmeras digitais para aumentar a capacidade de armazenamento. Da mesma forma, DVDs, Blu-ray e streaming de vídeo usam formatos de codificação de vídeo com perdas. A compactação com perdas é amplamente usada em vídeo.

Na compressão de áudio com perdas, métodos de psicoacústica são usados para remover componentes não audíveis (ou menos audíveis) do sinal de áudio. A compressão da fala humana geralmente é realizada com técnicas ainda mais especializadas; a codificação de fala é diferenciada como uma disciplina separada da compressão de áudio de uso geral. A codificação de fala é usada na telefonia via Internet, por exemplo, a compressão de áudio é usada para ripar CDs e é decodificada pelos reprodutores de áudio.

Compressão com perdas pode causar perda de geração.

Teoria

A base teórica para a compressão é fornecida pela teoria da informação e, mais especificamente, pelo teorema da codificação da fonte de Shannon; as teorias específicas do domínio incluem a teoria da informação algorítmica para compressão sem perdas e a teoria da taxa de distorção para compressão com perdas. Essas áreas de estudo foram essencialmente criadas por Claude Shannon, que publicou artigos fundamentais sobre o tema no final dos anos 1940 e início dos anos 1950. Outros tópicos associados à compactação incluem teoria de codificação e inferência estatística.

Aprendizado de máquina

Existe uma conexão estreita entre aprendizado de máquina e compactação. Um sistema que prevê as probabilidades posteriores de uma sequência, dado todo o seu histórico, pode ser usado para compactação de dados ideal (usando codificação aritmética na distribuição de saída). Por outro lado, um compressor ideal pode ser usado para previsão (encontrando o símbolo que comprime melhor, dado o histórico anterior). Essa equivalência tem sido usada como justificativa para usar a compactação de dados como referência para "inteligência geral".

Uma visão alternativa pode mostrar que algoritmos de compressão mapeiam strings implicitamente em vetores de espaço de recursos implícitos, e medidas de similaridade baseadas em compactação calculam similaridade dentro desses espaços de recursos. Para cada compressor C(.) definimos um espaço vetorial associado ℵ, tal que C(.) mapeia uma string de entrada x, correspondente à norma vetorial ||~x||. Um exame exaustivo dos espaços de recursos subjacentes a todos os algoritmos de compactação é impedido pelo espaço; em vez disso, a feature vectors escolhe examinar três métodos representativos de compactação sem perdas, LZW, LZ77 e PPM.

De acordo com a teoria AIXI, uma conexão explicada mais diretamente no Prêmio Hutter, a melhor compressão possível de x é o menor software possível que gera x. Por exemplo, nesse modelo, o tamanho compactado de um arquivo zip inclui o arquivo zip e o software de descompactação, pois não é possível descompactá-lo sem os dois, mas pode haver uma forma combinada ainda menor.

Exemplos de software de compressão de áudio/vídeo alimentado por IA incluem VP9, NVIDIA Maxine, AIVC, AccMPEG. Exemplos de software que podem executar compactação de imagem com tecnologia AI incluem OpenCV, TensorFlow, MATLAB's Image Processing Toolbox (IPT) e compressão de imagem generativa de alta fidelidade.

Diferenciação de dados

A compactação de dados pode ser vista como um caso especial de diferenciação de dados. A diferenciação de dados consiste em produzir uma diferença dada uma origem e um destino, com correção reproduzindo o destino dado um origem e uma diferença. Como não há origem e destino separados na compactação de dados, pode-se considerar a compactação de dados como uma diferenciação de dados com dados de origem vazios, o arquivo compactado corresponde a uma diferença do nada. Isso é o mesmo que considerar a entropia absoluta (correspondente à compressão de dados) como um caso especial de entropia relativa (correspondente à diferenciação de dados) sem dados iniciais.

O termo compressão diferencial é usado para enfatizar a conexão diferencial de dados.

Usos

Imagem

A codificação por entropia teve origem na década de 1940 com a introdução da codificação de Shannon-Fano, a base para a codificação de Huffman que foi desenvolvida em 1950. A codificação por transformação remonta ao final da década de 1960, com a introdução da codificação por transformada rápida de Fourier (FFT) em 1968 e a transformação de Hadamard em 1969.

Uma importante técnica de compressão de imagem é a transformada discreta de cosseno (DCT), uma técnica desenvolvida no início dos anos 1970. DCT é a base do JPEG, um formato de compactação com perdas que foi introduzido pelo Joint Photographic Experts Group (JPEG) em 1992. O JPEG reduz bastante a quantidade de dados necessária para representar uma imagem ao custo de uma redução relativamente pequena na qualidade da imagem e tornou-se o formato de arquivo de imagem mais usado. Seu algoritmo de compressão baseado em DCT altamente eficiente foi o grande responsável pela ampla proliferação de imagens digitais e fotos digitais.

Lempel–Ziv–Welch (LZW) é um algoritmo de compactação sem perdas desenvolvido em 1984. Ele é usado no formato GIF, introduzido em 1987. DEFLATE, um algoritmo de compactação sem perdas especificado em 1996, é usado no Portable Network Graphics (PNG) formato.

A compressão wavelet, o uso de wavelets na compressão de imagens, começou após o desenvolvimento da codificação DCT. O padrão JPEG 2000 foi introduzido em 2000. Em contraste com o algoritmo DCT usado pelo formato JPEG original, o JPEG 2000 usa algoritmos de transformação de wavelet discreta (DWT). A tecnologia JPEG 2000, que inclui a extensão Motion JPEG 2000, foi selecionada como o padrão de codificação de vídeo para cinema digital em 2004.

Áudio

A compactação de dados de áudio, que não deve ser confundida com a compactação de faixa dinâmica, tem o potencial de reduzir a largura de banda de transmissão e os requisitos de armazenamento de dados de áudio. Algoritmos de compressão de áudio são implementados em software como codecs de áudio. Na compactação com e sem perdas, a redundância de informações é reduzida, usando métodos como codificação, quantização, DCT e previsão linear para reduzir a quantidade de informações usadas para representar os dados não compactados.

Algoritmos de compressão de áudio com perdas fornecem maior compressão e são usados em vários aplicativos de áudio, incluindo Vorbis e MP3. Quase todos esses algoritmos dependem da psicoacústica para eliminar ou reduzir a fidelidade de sons menos audíveis, reduzindo assim o espaço necessário para armazená-los ou transmiti-los.

A compensação aceitável entre perda de qualidade de áudio e transmissão ou tamanho de armazenamento depende do aplicativo. Por exemplo, um disco compacto (CD) de 640 MB contém aproximadamente uma hora de música não compactada de alta fidelidade, menos de 2 horas de música compactada sem perdas ou 7 horas de música compactada no formato MP3 a uma taxa de bits média. Um gravador de som digital normalmente pode armazenar cerca de 200 horas de fala claramente inteligível em 640 MB.

A compactação de áudio sem perdas produz uma representação de dados digitais que podem ser decodificados em uma duplicata digital exata do original. As taxas de compactação estão em torno de 50 a 60% do tamanho original, o que é semelhante às da compactação genérica de dados sem perdas. Codecs sem perdas usam ajuste de curva ou previsão linear como base para estimar o sinal. Os parâmetros que descrevem a estimativa e a diferença entre a estimativa e o sinal real são codificados separadamente.

Existem vários formatos de compressão de áudio sem perdas. Consulte a lista de codecs sem perdas para obter uma listagem. Alguns formatos estão associados a um sistema distinto, como Direct Stream Transfer, usado em Super Audio CD e Meridian Lossless Packing, usado em DVD-Audio, Dolby TrueHD, Blu-ray e HD DVD.

Alguns formatos de arquivo de áudio apresentam uma combinação de um formato com perdas e uma correção sem perdas; isso permite remover a correção para obter facilmente um arquivo com perdas. Tais formatos incluem MPEG-4 SLS (Scalable to Lossless), WavPack e OptimFROG DualStream.

Quando os arquivos de áudio devem ser processados, seja por compactação adicional ou para edição, é desejável trabalhar a partir de um original inalterado (sem compactação ou compactação sem perdas). O processamento de um arquivo compactado com perdas para algum propósito geralmente produz um resultado final inferior à criação do mesmo arquivo compactado a partir de um original não compactado. Além da edição ou mixagem de som, a compactação de áudio sem perdas é frequentemente usada para armazenamento de arquivos ou como cópias originais.

Compressão de áudio com perdas

Comparação de espectrogramas de áudio em um formato não comprimido e vários formatos perdidos. Os espectrogramas perdidos mostram bandlimitagem de frequências mais altas, uma técnica comum associada com compressão de áudio com perda.

A compactação de áudio com perdas é usada em uma ampla gama de aplicações. Além de aplicativos autônomos somente de áudio de reprodução de arquivos em MP3 players ou computadores, fluxos de áudio compactados digitalmente são usados na maioria dos DVDs de vídeo, televisão digital, streaming de mídia na Internet, rádio via satélite e a cabo e cada vez mais em transmissões de rádio terrestre. A compactação com perdas normalmente atinge uma compactação muito maior do que a compactação sem perdas, descartando dados menos críticos com base em otimizações psicoacústicas.

A psicoacústica reconhece que nem todos os dados em um fluxo de áudio podem ser percebidos pelo sistema auditivo humano. A maioria das compactações com perdas reduz a redundância identificando primeiro sons perceptivamente irrelevantes, ou seja, sons muito difíceis de ouvir. Exemplos típicos incluem altas frequências ou sons que ocorrem ao mesmo tempo que sons mais altos. Esses sons irrelevantes são codificados com precisão diminuída ou não são codificados.

Devido à natureza dos algoritmos com perdas, a qualidade do áudio sofre uma perda de geração digital quando um arquivo é descompactado e recompactado. Isso torna a compactação com perdas inadequada para armazenar os resultados intermediários em aplicativos profissionais de engenharia de áudio, como edição de som e gravação multipista. No entanto, formatos com perdas, como MP3, são muito populares entre os usuários finais, pois o tamanho do arquivo é reduzido para 5-20% do tamanho original e um megabyte pode armazenar cerca de um minuto de música com qualidade adequada.

Métodos de codificação

Para determinar quais informações em um sinal de áudio são perceptivamente irrelevantes, a maioria dos algoritmos de compressão com perdas usa transformações como a transformada discreta de cosseno modificada (MDCT) para converter formas de onda amostradas no domínio do tempo em um domínio de transformação, normalmente o domínio da frequência. Depois de transformadas, as frequências dos componentes podem ser priorizadas de acordo com o quão audíveis elas são. A audibilidade dos componentes espectrais é avaliada usando o limiar absoluto da audição e os princípios do mascaramento simultâneo - o fenômeno em que um sinal é mascarado por outro sinal separado por frequência - e, em alguns casos, mascaramento temporal - onde um sinal é mascarado por outro sinal separados pelo tempo. Contornos de intensidade igual também podem ser usados para pesar a importância perceptiva dos componentes. Os modelos da combinação ouvido-cérebro humano que incorporam tais efeitos são freqüentemente chamados de modelos psicoacústicos.

Outros tipos de compressores com perdas, como a codificação preditiva linear (LPC) usada com fala, são codificadores baseados em fonte. O LPC usa um modelo do trato vocal humano para analisar os sons da fala e inferir os parâmetros usados pelo modelo para produzi-los momento a momento. Esses parâmetros variáveis são transmitidos ou armazenados e usados para conduzir outro modelo no decodificador que reproduz o som.

Os formatos com perdas são frequentemente usados para a distribuição de streaming de áudio ou comunicação interativa (como em redes de telefonia celular). Em tais aplicativos, os dados devem ser descompactados à medida que os dados fluem, e não após a transmissão de todo o fluxo de dados. Nem todos os codecs de áudio podem ser usados para aplicativos de streaming.

A latência é introduzida pelos métodos usados para codificar e decodificar os dados. Alguns codecs analisam um segmento mais longo, chamado de quadro, dos dados para otimizar a eficiência e, em seguida, codificam de uma maneira que requer um segmento maior de dados de uma só vez para decodificar. A latência inerente do algoritmo de codificação pode ser crítica; por exemplo, quando há uma transmissão bidirecional de dados, como em uma conversa telefônica, atrasos significativos podem degradar seriamente a qualidade percebida.

Em contraste com a velocidade de compressão, que é proporcional ao número de operações exigidas pelo algoritmo, aqui a latência se refere ao número de amostras que devem ser analisadas antes que um bloco de áudio seja processado. No caso mínimo, a latência é zero amostras (por exemplo, se o codificador/decodificador simplesmente reduzir o número de bits usados para quantizar o sinal). Algoritmos de domínio de tempo, como LPC, também costumam ter latências baixas, daí sua popularidade na codificação de fala para telefonia. Em algoritmos como o MP3, no entanto, um grande número de amostras deve ser analisado para implementar um modelo psicoacústico no domínio da frequência e a latência é da ordem de 23 ms.

Codificação de fala

A codificação de fala é uma categoria importante de compactação de dados de áudio. Os modelos de percepção usados para estimar quais aspectos da fala um ouvido humano pode ouvir são geralmente um pouco diferentes daqueles usados para a música. A gama de frequências necessária para transmitir os sons da voz humana é normalmente muito mais estreita do que a necessária para a música, e o som é normalmente menos complexo. Como resultado, a fala pode ser codificada em alta qualidade usando uma taxa de bits relativamente baixa.

Isso é conseguido, em geral, por alguma combinação de duas abordagens:

Os primeiros algoritmos usados na codificação de fala (e compressão de dados de áudio em geral) foram o algoritmo A-law e o algoritmo μ-law.

História

Sólido 922: A primeira placa de som de compressão de áudio comercial do mundo para PC, 1990

As primeiras pesquisas de áudio foram realizadas no Bell Labs. Lá, em 1950, C. Chapin Cutler registrou a patente da modulação por código de pulso diferencial (DPCM). Em 1973, o Adaptive DPCM (ADPCM) foi introduzido por P. Cummiskey, Nikil S. Jayant e James L. Flanagan.

A codificação perceptiva foi usada pela primeira vez para compressão de codificação de fala, com codificação preditiva linear (LPC). Os conceitos iniciais do LPC remontam ao trabalho de Fumitada Itakura (Nagoya University) e Shuzo Saito (Nippon Telegraph and Telephone) em 1966. Durante a década de 1970, Bishnu S. Atal e Manfred R. Schroeder, da Bell Labs, desenvolveram uma forma de LPC chamada A codificação preditiva adaptativa (APC), um algoritmo de codificação perceptual que explorou as propriedades de mascaramento do ouvido humano, seguiu no início dos anos 1980 com o algoritmo de previsão linear excitado por código (CELP), que alcançou uma taxa de compressão significativa para a época. A codificação perceptiva é usada por formatos modernos de compressão de áudio, como MP3 e AAC.

A transformada discreta de cosseno (DCT), desenvolvida por Nasir Ahmed, T. Natarajan e K. R. Rao em 1974, forneceu a base para a transformada discreta de cosseno modificada (MDCT) usada pelos formatos modernos de compressão de áudio, como MP3, Dolby Digital e AAC. A MDCT foi proposta por J. P. Princen, A. W. Johnson e A. B. Bradley em 1987, seguindo trabalhos anteriores de Princen e Bradley em 1986.

O primeiro sistema de compressão de áudio de automação de transmissão comercial do mundo foi desenvolvido por Oscar Bonello, professor de engenharia da Universidade de Buenos Aires. Em 1983, usando o princípio psicoacústico do mascaramento de bandas críticas publicado pela primeira vez em 1967, ele começou a desenvolver uma aplicação prática baseada no recém-desenvolvido computador IBM PC, e o sistema de automação de transmissão foi lançado em 1987 sob o nome de Audicom. Vinte anos depois, quase todas as estações de rádio do mundo usavam tecnologia semelhante fabricada por várias empresas.

Um compêndio de literatura para uma grande variedade de sistemas de codificação de áudio foi publicado no Journal on Selected Areas in Communications do IEEE (JSAC), em fevereiro de 1988 Embora existam alguns artigos anteriores a essa época, esta coleção documentou toda uma variedade de codificadores de áudio prontos e funcionais, quase todos usando técnicas de percepção e algum tipo de análise de frequência e codificação sem ruído de back-end.

Vídeo

O vídeo não compactado requer uma taxa de dados muito alta. Embora os codecs de compactação de vídeo sem perdas sejam executados em um fator de compactação de 5 a 12, um vídeo típico de compactação com perdas H.264 tem um fator de compactação entre 20 e 200.

As duas principais técnicas de compressão de vídeo usadas nos padrões de codificação de vídeo são a DCT e a compensação de movimento (MC). A maioria dos padrões de codificação de vídeo, como os formatos H.26x e MPEG, geralmente usa codificação de vídeo DCT com compensação de movimento (compensação de movimento de bloco).

A maioria dos codecs de vídeo são usados juntamente com técnicas de compressão de áudio para armazenar os fluxos de dados separados, mas complementares, como um pacote combinado usando os chamados formatos de contêiner.

Teoria da codificação

Os dados de vídeo podem ser representados como uma série de quadros de imagens estáticas. Esses dados geralmente contêm quantidades abundantes de redundância espacial e temporal. Algoritmos de compressão de vídeo tentam reduzir a redundância e armazenar informações de forma mais compacta.

A maioria dos formatos e codecs de compactação de vídeo explora a redundância espacial e temporal (por exemplo, por meio de codificação de diferença com compensação de movimento). As semelhanças podem ser codificadas apenas armazenando diferenças entre, por exemplo, quadros adjacentes temporalmente (codificação entre quadros) ou pixels adjacentes espacialmente (codificação intraquadro). A compactação entre quadros (uma codificação delta temporal) (re)usa dados de um ou mais quadros anteriores ou posteriores em uma sequência para descrever o quadro atual. A codificação intraquadro, por outro lado, usa apenas os dados do quadro atual, sendo efetivamente a compactação de imagens estáticas.

Os formatos de codificação de vídeo intraquadro usados em filmadoras e edição de vídeo empregam compactação mais simples que usa apenas previsão intraquadro. Isso simplifica o software de edição de vídeo, pois evita uma situação em que um quadro compactado se refere a dados que o editor excluiu.

Normalmente, a compactação de vídeo também emprega técnicas de compactação com perdas, como quantização, que reduz aspectos dos dados de origem que são (mais ou menos) irrelevantes para a percepção visual humana, explorando os recursos perceptivos da visão humana. Por exemplo, pequenas diferenças na cor são mais difíceis de perceber do que mudanças no brilho. Os algoritmos de compactação podem calcular a média de uma cor nessas áreas semelhantes de maneira semelhante àquela usada na compactação de imagens JPEG. Como em toda compactação com perdas, há uma compensação entre qualidade de vídeo e taxa de bits, custo de processamento da compactação e descompactação e requisitos do sistema. O vídeo altamente compactado pode apresentar artefatos visíveis ou que distraem.

Outros métodos além dos formatos de transformada baseados em DCT predominantes, como compressão fractal, busca de correspondência e o uso de uma transformada discreta de wavelet (DWT), têm sido objeto de algumas pesquisas, mas normalmente não são usados em produtos práticos. A compressão Wavelet é usada em codificadores de imagens estáticas e codificadores de vídeo sem compensação de movimento. O interesse na compressão fractal parece estar diminuindo, devido a análises teóricas recentes que mostram uma comparativa falta de eficácia de tais métodos.

Codificação entre quadros

Na codificação entre quadros, quadros individuais de uma sequência de vídeo são comparados de um quadro a outro, e o codec de compressão de vídeo registra as diferenças no quadro de referência. Se o quadro contiver áreas onde nada foi movido, o sistema pode simplesmente emitir um comando curto que copia aquela parte do quadro anterior para o próximo. Se as seções do quadro se moverem de maneira simples, o compactador pode emitir um comando (um pouco mais longo) que diz ao descompactador para deslocar, girar, clarear ou escurecer a cópia. Esse comando mais longo ainda permanece muito mais curto do que os dados gerados pela compactação intraquadro. Normalmente, o codificador também transmitirá um sinal residual que descreve as diferenças mais sutis remanescentes para as imagens de referência. Usando codificação de entropia, esses sinais residuais têm uma representação mais compacta do que o sinal completo. Em áreas de vídeo com mais movimento, a compactação deve codificar mais dados para acompanhar o maior número de pixels que estão mudando. Comumente durante explosões, chamas, bandos de animais e em alguns tiros panorâmicos, o detalhe de alta frequência leva a quedas de qualidade ou a aumentos na taxa de bits variável.

Formatos de transformação baseados em blocos híbridos

Etapas de processamento de um codificador de vídeo típico

Atualmente, quase todos os métodos de compressão de vídeo comumente usados (por exemplo, aqueles em padrões aprovados pelo ITU-T ou ISO) compartilham a mesma arquitetura básica que remonta ao H.261, que foi padronizado em 1988 pelo ITU-T. Eles dependem principalmente do DCT, aplicado a blocos retangulares de pixels vizinhos, e previsão temporal usando vetores de movimento, bem como atualmente também uma etapa de filtragem em loop.

No estágio de previsão, são aplicadas várias técnicas de desduplicação e codificação de diferença que ajudam a descorrelacionar dados e descrever novos dados com base nos dados já transmitidos.

Em seguida, blocos retangulares de dados de pixel restantes são transformados no domínio da frequência. No estágio principal de processamento com perdas, os dados do domínio da frequência são quantizados para reduzir informações irrelevantes para a percepção visual humana.

No último estágio, a redundância estatística é amplamente eliminada por um codificador de entropia que geralmente aplica alguma forma de codificação aritmética.

Em um estágio adicional de filtragem em loop, vários filtros podem ser aplicados ao sinal de imagem reconstruído. Ao calcular esses filtros também dentro do loop de codificação, eles podem ajudar na compactação porque podem ser aplicados ao material de referência antes de serem usados no processo de previsão e podem ser guiados usando o sinal original. O exemplo mais popular são os filtros de desbloqueio que desfocam os artefatos de bloqueio das descontinuidades de quantização nos limites do bloco de transformação.

História

Em 1967, A.H. Robinson e C. Cherry propuseram um esquema de compressão de largura de banda de codificação de comprimento de execução para a transmissão de sinais analógicos de televisão. O DCT, que é fundamental para a compressão de vídeo moderna, foi introduzido por Nasir Ahmed, T. Natarajan e K. R. Rao em 1974.

O H.261, lançado em 1988, introduziu comercialmente a arquitetura básica predominante da tecnologia de compressão de vídeo. Foi o primeiro formato de codificação de vídeo baseado na compressão DCT. O H.261 foi desenvolvido por várias empresas, incluindo Hitachi, PictureTel, NTT, BT e Toshiba.

Os padrões de codificação de vídeo mais populares usados para codecs são os padrões MPEG. O MPEG-1 foi desenvolvido pelo Motion Picture Experts Group (MPEG) em 1991 e foi projetado para compactar vídeo com qualidade VHS. Ele foi sucedido em 1994 pelo MPEG-2/H.262, que foi desenvolvido por várias empresas, principalmente Sony, Thomson e Mitsubishi Electric. O MPEG-2 tornou-se o formato de vídeo padrão para DVD e televisão digital SD. Em 1999, foi seguido pelo MPEG-4/H.263. Também foi desenvolvido por várias empresas, principalmente Mitsubishi Electric, Hitachi e Panasonic.

H.264/MPEG-4 AVC foi desenvolvido em 2003 por várias organizações, principalmente Panasonic, Godo Kaisha IP Bridge e LG Electronics. A AVC introduziu comercialmente os algoritmos modernos de codificação aritmética binária adaptável ao contexto (CABAC) e codificação de comprimento variável adaptável ao contexto (CAVLC). AVC é o principal padrão de codificação de vídeo para discos Blu-ray e é amplamente usado por sites de compartilhamento de vídeo e serviços de streaming na Internet, como YouTube, Netflix, Vimeo e iTunes Store, software da Web, como Adobe Flash Player e Microsoft Silverlight, e vários A HDTV transmite pela televisão terrestre e por satélite.

Genética

Algoritmos de compressão genética são a última geração de algoritmos sem perdas que comprimem dados (normalmente sequências de nucleotídeos) usando algoritmos de compressão convencionais e algoritmos genéticos adaptados ao tipo de dados específico. Em 2012, uma equipe de cientistas da Universidade Johns Hopkins publicou um algoritmo de compressão genética que não usa um genoma de referência para compressão. O HAPZIPPER foi adaptado para dados do HapMap e atinge uma compactação de mais de 20 vezes (redução de 95% no tamanho do arquivo), fornecendo compactação de 2 a 4 vezes melhor e é menos intensivo computacionalmente do que os principais utilitários de compactação de uso geral. Para isso, Chanda, Elhaik e Bader introduziram a codificação baseada em MAF (MAFE), que reduz a heterogeneidade do conjunto de dados classificando os SNPs por sua frequência de alelo menor, homogeneizando assim o conjunto de dados. Outros algoritmos desenvolvidos em 2009 e 2013 (DNAZip e GenomeZip) têm taxas de compressão de até 1200 vezes, permitindo que 6 bilhões de genomas humanos diploides de pares de bases sejam armazenados em 2,5 megabytes (relativo a um genoma de referência ou calculado sobre muitos genomas). Para uma referência em compressores de dados genéticos/genómicos, consulte

Perspectivas e potencial atualmente não utilizado

Estima-se que a quantidade total de dados armazenados nos dispositivos de armazenamento do mundo pode ser ainda mais compactada com os algoritmos de compactação existentes por um fator médio restante de 4,5:1. Estima-se que a capacidade tecnológica combinada do mundo para armazenar informações forneça 1.300 exabytes de dígitos de hardware em 2007, mas quando o conteúdo correspondente é compactado de maneira ideal, isso representa apenas 295 exabytes de informações de Shannon.