Compressão sem perdas (ou lossless compression) é uma classe de compressão de dados que permite que os dados originais sejam perfeitamente reconstruídos a partir dos dados comprimidos, sem perda de informação. A compressão sem perdas é possível porque a maioria dos dados do mundo real exibe redundância estatística.[1] Em contraste, a compressão com perdas permite apenas a reconstrução de uma aproximação dos dados originais, embora geralmente com taxas de compressão muito melhores (e, portanto, tamanhos de mídia reduzidos).

Pela operação do princípio da casa dos pombos, nenhum algoritmo de compressão sem perdas pode reduzir o tamanho de todos os dados possíveis: alguns dados ficarão maiores em pelo menos um símbolo ou bit.

Os algoritmos de compressão são geralmente eficazes para documentos legíveis por humanos e máquinas e não podem reduzir o tamanho de dados aleatórios que não contêm redundância. Existem diferentes algoritmos projetados seja com um tipo específico de dados de entrada em mente, seja com suposições específicas sobre quais tipos de redundância os dados não comprimidos provavelmente contêm.

A compressão de dados sem perdas é usada em muitas aplicações. Por exemplo, é usada no formato de arquivo ZIP e na ferramenta GNU gzip. Também é frequentemente usada como um componente dentro de tecnologias de compressão de dados com perdas (por exemplo, pré-processamento estéreo mid/side sem perdas por codificadores MP3 e outros codificadores de áudio com perdas).[2]

A compressão sem perdas é usada em casos onde é importante que os dados originais e os descomprimidos sejam idênticos, ou onde desvios dos dados originais seriam desfavoráveis. Exemplos comuns são programas executáveis, documentos de texto e código-fonte. Alguns formatos de arquivo de imagem, como PNG ou GIF, usam apenas compressão sem perdas, enquanto outros como TIFF e MNG podem usar métodos sem perdas ou com perdas. Os formatos de áudio sem perdas são mais frequentemente usados para fins de arquivamento ou produção, enquanto arquivos de áudio com perdas menores são tipicamente usados em players portáteis e em outros casos onde o espaço de armazenamento é limitado ou a replicação exata do áudio é desnecessária.

Técnicas

editar

A maioria dos programas de compressão sem perdas faz duas coisas em sequência: a primeira etapa gera um modelo estatístico para os dados de entrada, e a segunda etapa usa este modelo para mapear os dados de entrada para sequências de bits de tal forma que dados "prováveis" (ou seja, frequentemente encontrados) produzam saída mais curta do que dados "improváveis".

Os principais algoritmos de codificação usados para produzir sequências de bits são a codificação de Huffman (também usada pelo algoritmo deflate) e a codificação aritmética. A codificação aritmética atinge taxas de compressão próximas do melhor possível para um determinado modelo estatístico, que é dado pela entropia da informação, enquanto a compressão de Huffman é mais simples e rápida, mas produz resultados ruins para modelos que lidam com probabilidades de símbolo próximas de 1.

Existem duas maneiras principais de construir modelos estatísticos: em um modelo estático, os dados são analisados e um modelo é construído, então este modelo é armazenado com os dados comprimidos. Esta abordagem é simples e modular, mas tem a desvantagem de que o próprio modelo pode ser caro para armazenar, e também que força o uso de um único modelo para todos os dados sendo comprimidos, e portanto tem desempenho ruim em arquivos que contêm dados heterogêneos. Modelos adaptativos atualizam dinamicamente o modelo à medida que os dados são comprimidos. Tanto o codificador quanto o decodificador começam com um modelo trivial, produzindo baixa compressão dos dados iniciais, mas à medida que aprendem mais sobre os dados, o desempenho melhora. Os tipos mais populares de compressão usados na prática agora usam codificadores adaptativos.

Os métodos de compressão sem perdas podem ser categorizados de acordo com o tipo de dados que foram projetados para comprimir. Embora, em princípio, qualquer algoritmo de compressão sem perdas de uso geral (uso geral significando que pode aceitar qualquer sequência de bits) possa ser usado em qualquer tipo de dados, muitos são incapazes de alcançar compressão significativa em dados que não são da forma para a qual foram projetados para comprimir. Muitas das técnicas de compressão sem perdas usadas para texto também funcionam razoavelmente bem para imagens de cor indexada.

Multimídia

editar

Essas técnicas aproveitam as características específicas das imagens, como o fenômeno comum de áreas 2-D contíguas de tons semelhantes. Cada pixel, exceto o primeiro, é substituído pela diferença em relação ao seu vizinho esquerdo. Isso leva a valores pequenos tendo uma probabilidade muito maior do que valores grandes. Isso também é frequentemente aplicado a arquivos de som, e pode comprimir arquivos que contêm principalmente baixas frequências e baixos volumes. Para imagens, este passo pode ser repetido tomando a diferença em relação ao pixel superior, e então em vídeos, a diferença em relação ao pixel no próximo quadro pode ser tomada.[carece de fontes?]

A codificação adaptativa usa as probabilidades da amostra anterior na codificação de som, do pixel esquerdo e superior na codificação de imagem, e adicionalmente do quadro anterior na codificação de vídeo. Na transformada wavelet, as probabilidades também são passadas através da hierarquia.[3]

Questões legais históricas

editar

Muitos desses métodos são implementados em ferramentas de código aberto e proprietárias, particularmente LZW e suas variantes. Alguns algoritmos são patenteados nos Estados Unidos e em outros países e seu uso legal requer licenciamento pelo detentor da patente. Devido a patentes sobre certos tipos de compressão LZW, e em particular práticas de licenciamento pelo detentor da patente Unisys que muitos desenvolvedores consideraram abusivas, alguns proponentes de código aberto encorajaram as pessoas a evitar o uso do Graphics Interchange Format (GIF) para comprimir arquivos de imagem estáticos em favor do Portable Network Graphics (PNG), que combina o algoritmo deflate baseado em LZ77 com uma seleção de filtros de predição específicos do domínio. No entanto, as patentes sobre LZW expiraram em 20 de junho de 2003.[4]

Muitas das técnicas de compressão sem perdas usadas para texto também funcionam razoavelmente bem para imagens indexadas, mas há outras técnicas que não funcionam para texto típico e são úteis para algumas imagens (particularmente bitmaps simples), e outras técnicas que aproveitam as características específicas das imagens (como o fenômeno comum de áreas 2-D contíguas de tons semelhantes, e o fato de que imagens coloridas geralmente têm uma preponderância de uma gama limitada de cores dentre aquelas representáveis no espaço de cor).

Como mencionado anteriormente, a compressão de som sem perdas é uma área um tanto especializada. Algoritmos de compressão de som sem perdas podem aproveitar os padrões repetitivos mostrados pela natureza ondulatória dos dadosessencialmente usando modelos autorregressivos para prever o próximo valor e codificar a diferença (possivelmente pequena) entre o valor esperado e o dado real. Se a diferença entre o valor previsto e o dado real (chamada de erro) tende a ser pequena, então certos valores de diferença (como 0, +1, −1 etc. em valores de amostra) tornam-se muito frequentes, o que pode ser explorado codificando-os em poucos bits de saída.

Às vezes é benéfico comprimir apenas as diferenças entre duas versões de um arquivo (ou, na compressão de vídeo, de imagens sucessivas dentro de uma sequência). Isso é chamado de codificação delta (da letra grega Δ, que em matemática denota uma diferença), mas o termo é tipicamente usado apenas se ambas as versões são significativas fora da compressão e descompressão. Por exemplo, enquanto o processo de compressão do erro no esquema de compressão de áudio sem perdas mencionado acima poderia ser descrito como codificação delta da onda sonora aproximada para a onda sonora original, a versão aproximada da onda sonora não é significativa em nenhum outro contexto.

Métodos

editar

Nenhum algoritmo de compressão sem perdas pode comprimir eficientemente todos os dados possíveis (veja § Limitações para mais sobre isso). Por esta razão, existem muitos algoritmos diferentes que são projetados seja com um tipo específico de dados de entrada em mente, seja com suposições específicas sobre quais tipos de redundância os dados não comprimidos provavelmente contêm.

Alguns dos algoritmos de compressão sem perdas mais comuns estão listados abaixo.

      1. Uso geral
  • ANS – Codificação de entropia, usado por LZFSE e Zstandard
  • Codificação aritmética – Codificação de entropia
  • Transformada de Burrows–Wheeler – transformada reversível para tornar dados textuais mais compressíveis, usada por bzip2
  • Codificação de Huffman – Codificação de entropia, combina bem com outros algoritmos
  • Compressão Lempel-Ziv (LZ77 e LZ78) – Algoritmo baseado em dicionário que forma a base para muitos outros algoritmos
    • Deflate – Combina LZ77 com codificação de Huffman, usado por imagens ZIP, gzip, zlib e PNG
    • Brotli – Usa LZ77 com tamanho de janela deslizante alto (até 16 MiB), codificação de Huffman e modelagem de contexto.
    • LZ4 – Compressão e descompressão muito rápidas.
    • Algoritmo de cadeia de Markov Lempel–Ziv (LZMA) – Taxa de compressão muito alta, usado por 7zip e xz
    • Lempel–Ziv–Storer–Szymanski (LZSS) – Usado por WinRAR em conjunto com codificação de Huffman
    • Lempel–Ziv–Welch (LZW) – Usado por imagens GIF e pelo utilitário compress do Unix
  • Predição por correspondência parcial (PPM) – Otimizado para comprimir texto simples
  • Codificação run-length (RLE) – Esquema simples que fornece boa compressão de dados contendo muitas execuções do mesmo valor
      1. Áudio
      1. Gráficos raster
  • Codificação apenas sem perdas
    • BMP
    • PNG – Portable Network Graphics
    • GIF – Graphics Interchange Format
  • Opções de codificação com e sem perdas
    • AVIF – AV1 Image File Format
    • FLIF – Free Lossless Image Format
    • HEIF – High Efficiency Image File Format, usando HEVC
    • ILBM – (compressão RLE de imagens Amiga IFF)
    • JBIG2 – compressão de imagens PB
    • JPEG 2000 – (via transformada ondeleta inteira reversível Le Gall–Tabatabai 5/3[3][5][6])
    • JPEG-LS
    • JPEG XL
    • JPEG XR – anteriormente WMPhoto e HD Photo
    • LDCT – Transformada discreta de cosseno[7][8]
    • PCX – PiCture eXchange
    • QOI – Quite OK Image Format
    • TGA – Truevision TGA
    • TIFF – Tag Image File Format
    • WebP
      1. Gráficos 3D
  • OpenCTM – Compressão sem perdas de malhas de triângulos 3D
      1. Vídeo

Ver lista de codecs de vídeo sem perdas

      1. Criptografia

Criptossistemas frequentemente comprimem dados (o "texto simples") antes da criptografia para maior segurança. Quando implementado corretamente, a compressão aumenta muito a distância de unicidade removendo padrões que poderiam facilitar a criptoanálise.[9] No entanto, muitos algoritmos de compressão sem perdas comuns produzem cabeçalhos, wrappers, tabelas ou outras saídas previsíveis que podem, em vez disso, tornar a criptoanálise mais fácil. Assim, os criptossistemas devem utilizar algoritmos de compressão cuja saída não contenha esses padrões previsíveis.

      1. Genética e genômica

Algoritmos de compressão genética (não confundir com algoritmos genéticos) são a mais recente geração de algoritmos sem perdas que comprimem dados (tipicamente sequências de nucleotídeos) usando tanto algoritmos de compressão convencionais quanto algoritmos específicos adaptados a dados genéticos. Em 2012, uma equipe de cientistas da Universidade Johns Hopkins publicou o primeiro algoritmo de compressão genética que não depende de bancos de dados genéticos externos para compressão. HAPZIPPER foi adaptado para dados do HapMap e atinge compressão superior a 20 vezes (redução de 95% no tamanho do arquivo), fornecendo compressão 2 a 4 vezes melhor e muito mais rápida do que os principais utilitários de compressão de uso geral.[10]

Algoritmos de compressão de sequências genômicas, também conhecidos como compressores de sequências de DNA, exploram o fato de que sequências de DNA têm propriedades características, como repetições invertidas. Os compressores de maior sucesso são XM e GeCo.[11] Para eucariotos, XM é ligeiramente melhor na taxa de compressão, embora para sequências maiores que 100 MB seus requisitos computacionais sejam impraticáveis.

      1. Executáveis

Executáveis autoextraíveis contêm uma aplicação comprimida e um descompressor. Quando executado, o descompressor descomprime e executa transparentemente a aplicação original. Isso é especialmente usado frequentemente em codificação de demo, onde competições são realizadas para demos com limites de tamanho rigorosos, tão pequenos quanto 1 kilobyte. Este tipo de compressão não é estritamente limitado a executáveis binários, mas também pode ser aplicado a scripts, como JavaScript.

Benchmarks

editar

Algoritmos de compressão sem perdas e suas implementações são rotineiramente testados em benchmarks frente a frente. Existem vários benchmarks de compressão mais conhecidos. Alguns benchmarks cobrem apenas a taxa de compressão de dados, então os vencedores nesses benchmarks podem ser inadequados para uso diário devido à baixa velocidade dos melhores desempenhos. Outra desvantagem de alguns benchmarks é que seus arquivos de dados são conhecidos, então alguns programadores podem otimizar seus programas para o melhor desempenho em um conjunto de dados específico. Os vencedores nesses benchmarks geralmente vêm da classe de software de compressão por mistura de contextos.

Matt Mahoney, em sua edição de fevereiro de 2010 do livreto gratuito Data Compression Explained, lista adicionalmente o seguinte:[12]

  • O Calgary Corpus datado de 1987 não é mais amplamente usado devido ao seu pequeno tamanho. Matt Mahoney manteve o Calgary Compression Challenge, criado e mantido de 21 de maio de 1996 a 21 de maio de 2016 por Leonid A. Broukhis.
  • O Large Text Compression Benchmark e o similar Hutter Prize usam um conjunto de dados XML UTF-8 da Wikipédia aparado.
  • O Generic Compression Benchmark, mantido por Matt Mahoney, testa a compressão de dados gerados por máquinas de Turing aleatórias.
  • Sami Runsas (o autor do NanoZip) manteve o Compression Ratings, um benchmark similar ao teste de múltiplos arquivos do Maximum Compression, mas com requisitos mínimos de velocidade. Ele oferecia a calculadora que permitia ao usuário ponderar a importância da velocidade e da taxa de compressão. Os programas principais eram bastante diferentes devido ao requisito de velocidade. Em janeiro de 2010, o programa principal era o NanoZip seguido por FreeArc, CCM, flashzip e 7-Zip.
  • O Monster of Compression benchmark de Nania Francesco Antonio testou a compressão em 1 Gb de dados públicos com um limite de tempo de 40 minutos. Em dezembro de 2009, o arquivador mais bem classificado era o NanoZip 0.07a e o compressor de arquivo único mais bem classificado era o ccmx 1.30c.

O site Compression Ratings publicou um resumo em gráfico da "fronteira" em taxa de compressão e tempo.[13]

      1. Corpus Silesia

O corpus Silesia é uma coleção de arquivos que foi criada em 2003 como uma alternativa para o Canterbury corpus e Calgary corpus, com base em preocupações sobre quão bem estes representavam arquivos modernos. Ele contém vários tipos de dados, incluindo grandes documentos de texto, arquivos executáveis e bancos de dados.[14] É amplamente usado em pesquisa de compressão de dados.[15]

O corpus consiste em 12 arquivos, totalizando 211 MB. Os arquivos foram escolhidos para representar o que o autor considerava serem tipos de dados provavelmente de crescimento rápido em tamanho ao longo do tempo, como programas de computador e bancos de dados, juntamente com benchmarks de compressão mais tradicionais, como grandes arquivos de texto.[14]

Visão geral dos arquivos, seus tamanhos, descrições e tipos de dados
Arquivo Tamanho (B) Descrição Tipo de dados
dickens 10192446 As obras de Charles Dickens Texto em inglês
mozilla 51220480 Arquivos executáveis para Mozilla 1.0 Executável
mr 9970564 Imagens de RM Imagem 3D
nci 33553445 Um banco de dados de estruturas químicas Banco de dados
office 6152192 Uma biblioteca compartilhada do OpenOffice Executável
osdb 10085684 Um banco de dados MySQL de amostra do Open Source Database Benchmark Banco de dados
reymont 6625583 O texto do livro Chłopi de Władysław Reymont PDF em polonês
samba 21606400 O código-fonte do Samba 2‑2.3 Executável
sao 7251944 O catálogo de estrelas SAO Banco de dados binário
webster 41458703 O Dicionário Webster Unabridged de 1913 HTML
xml 5345280 Arquivos XML coletados XML
x-ray 8474240 Um Raio-X médico Imagem
Total 211938580

Por ter uma seleção mais ampla e moderna de tipos de dados, é considerado uma fonte melhor de dados de teste para algoritmos de compressão quando comparado ao Calgary corpus.[16]

Limitações

editar

Algoritmos de compressão de dados sem perdas não podem garantir compressão para todos os conjuntos de dados de entrada. Em outras palavras, para qualquer algoritmo de compressão de dados sem perdas, haverá um conjunto de dados de entrada que não fica menor quando processado pelo algoritmo, e para qualquer algoritmo de compressão de dados sem perdas que torne pelo menos um arquivo menor, haverá pelo menos um arquivo que ele torna maior. Isso é facilmente provado com matemática elementar usando um argumento de contagem chamado princípio da casa dos pombos, como segue:[17][18]

  • Assuma que cada arquivo é representado como uma sequência de bits de algum comprimento arbitrário.
  • Suponha que existe um algoritmo de compressão que transforma cada arquivo em um arquivo de saída que não é maior que o arquivo original, e que pelo menos um arquivo será comprimido em um arquivo de saída que é mais curto que o arquivo original.
  • Seja M o menor número tal que existe um arquivo F com comprimento M bits que comprime para algo mais curto. Seja N o comprimento (em bits) da versão comprimida de F.
  • Como N<M, todo arquivo de comprimento N mantém seu tamanho durante a compressão. Existem 2N tais arquivos possíveis. Juntamente com F, isso faz 2N+1 arquivos que todos comprimem em um dos 2N arquivos de comprimento N.
  • Mas 2N é menor que 2N+1, então pelo princípio da casa dos pombos deve haver algum arquivo de comprimento N que é simultaneamente a saída da função de compressão em duas entradas diferentes. Esse arquivo não pode ser descomprimido confiavelmente (qual das duas originais isso deveria produzir?), o que contradiz a suposição de que o algoritmo era sem perdas.
  • Devemos, portanto, concluir que nossa hipótese original (de que a função de compressão não torna nenhum arquivo mais longo) é necessariamente falsa.

A maioria dos algoritmos de compressão práticos fornecem um recurso de "escape" que pode desligar a codificação normal para arquivos que se tornariam mais longos ao serem codificados. Em teoria, apenas um único bit adicional é necessário para dizer ao decodificador que a codificação normal foi desligada para toda a entrada; no entanto, a maioria dos algoritmos de codificação usa pelo menos um byte completo (e tipicamente mais de um) para este propósito. Por exemplo, arquivos comprimidos com deflate nunca precisam crescer mais do que 5 bytes por 65.535 bytes de entrada.

De fato, se considerarmos arquivos de comprimento N, se todos os arquivos fossem igualmente prováveis, então para qualquer compressão sem perdas que reduza o tamanho de algum arquivo, o comprimento esperado de um arquivo comprimido (médio sobre todos os arquivos possíveis de comprimento N) deve necessariamente ser maior que N.[carece de fontes?] Portanto, se não sabemos nada sobre as propriedades dos dados que estamos comprimindo, poderíamos simplesmente não comprimi-los. Um algoritmo de compressão sem perdas é útil apenas quando é mais provável que comprimamos certos tipos de arquivos do que outros; então o algoritmo pode ser projetado para comprimir melhor esses tipos de dados.

Assim, a principal lição do argumento não é que se corre o risco de grandes perdas, mas meramente que nem sempre se pode vencer. Escolher um algoritmo sempre significa implicitamente selecionar um subconjunto de todos os arquivos que se tornarão utilmente mais curtos. Esta é a razão teórica pela qual precisamos ter diferentes algoritmos de compressão para diferentes tipos de arquivos: não pode haver qualquer algoritmo que seja bom para todos os tipos de dados.

O "truque" que permite que algoritmos de compressão sem perdas, usados no tipo de dados para os quais foram projetados, comprimam consistentemente tais arquivos para uma forma mais curta é que os arquivos para os quais os algoritmos são projetados para atuar têm alguma forma de redundância facilmente modelada que o algoritmo é projetado para remover e, portanto, pertencem ao subconjunto de arquivos que esse algoritmo pode tornar mais curtos, enquanto outros arquivos não seriam comprimidos ou até mesmo ficariam maiores. Os algoritmos são geralmente bastante ajustados para um tipo específico de arquivo: por exemplo, programas de compressão de áudio sem perdas não funcionam bem em arquivos de texto, e vice-versa.

Em particular, arquivos de dados aleatórios não podem ser consistentemente comprimidos por qualquer algoritmo de compressão de dados sem perdas concebível; de fato, este resultado é usado para definir o conceito de aleatoriedade na complexidade de Kolmogorov.[19]

É provavelmente impossível criar um algoritmo que possa comprimir sem perdas quaisquer dados. Embora tenha havido muitas alegações ao longo dos anos de empresas alcançando "compressão perfeita" onde um número arbitrário N de bits aleatórios pode sempre ser comprimido para N − 1 bits, estes tipos de alegações podem ser seguramente descartadas sem mesmo olhar para quaisquer detalhes adicionais sobre o esquema de compressão alegado. Tal algoritmo contradiz leis fundamentais da matemática porque, se existisse, poderia ser aplicado repetidamente para reduzir qualquer arquivo sem perdas para o comprimento 1.[18]

Por outro lado, também foi provado que não existe algoritmo para determinar se um arquivo é incompressível no sentido da complexidade de Kolmogorov.[20] Portanto, é possível que qualquer arquivo particular, mesmo que pareça aleatório, possa ser significativamente comprimido, incluindo até o tamanho do descompressor. Um exemplo são os dígitos da constante matemática pi, que parecem aleatórios, mas podem ser gerados por um programa muito pequeno. No entanto, mesmo que não se possa determinar se um arquivo particular é incompressível, um teorema simples sobre strings incompressíveis mostra que mais de 99% dos arquivos de qualquer comprimento dado não podem ser comprimidos em mais de um byte (incluindo o tamanho do descompressor).

      1. Fundamentos matemáticos

Abstratamente, um algoritmo de compressão pode ser visto como uma função em sequências (normalmente de octetos). A compressão é bem-sucedida se a sequência resultante é mais curta que a sequência original (e as instruções para o mapa de descompressão). Para que um algoritmo de compressão seja sem perdas, o mapa de compressão deve formar uma injeção de sequências de bits "planas" para "comprimidas". O princípio da casa dos pombos proíbe uma bijeção entre a coleção de sequências de comprimento N e qualquer subconjunto da coleção de sequências de comprimento N−1. Portanto, não é possível produzir um algoritmo sem perdas que reduza o tamanho de toda sequência de entrada possível.[21]

      1. Pontos de aplicação na teoria real da compressão

Os projetistas de algoritmos de compressão reais aceitam que fluxos de alta entropia de informação não podem ser comprimidos e, consequentemente, incluem facilidades para detectar e lidar com essa condição. Uma maneira óbvia de detecção é aplicar um algoritmo de compressão bruto e testar se sua saída é menor que sua entrada. Às vezes, a detecção é feita por heurísticas; por exemplo, uma aplicação de compressão pode considerar arquivos cujos nomes terminam em ".zip", ".arj" ou ".lha" como incompressíveis sem qualquer detecção mais sofisticada. Uma maneira comum de lidar com esta situação é citar a entrada, ou partes incompressíveis da entrada, na saída, minimizando a sobrecarga de compressão. Por exemplo, o formato de dados zip especifica o 'método de compressão' de 'Armazenado' para arquivos de entrada que foram copiados para o arquivo verbatim.[22]

Ver também

editar

Referências

editar
  1. «Unit 4 Lab 4: Data Representation and Compression». BJC.EDC.org. p. 6. Consultado em 9 de abril de 2022 
  2. Price, Andy (3 de março de 2022). «Lossless Streaming – the future of high res audio». Audio Media International. Consultado em 25 de outubro de 2025 
  3. a b Unser, M.; Blu, T. (2003). «Mathematical Properties of the JPEG2000 Wavelet Filters» (PDF). IEEE Transactions on Image Processing. 12 (9): 1080–1090. Bibcode:2003ITIP...12.1080U. PMID 18237979. doi:10.1109/TIP.2003.812329 
  4. «LZW Patent Information». About Unisys. Unisys. Arquivado do original em 2 de junho de 2009 
  5. Sullivan, Gary (8–12 de dezembro de 2003). «General characteristics and design considerations for temporal subband video coding». ITU-T. Video Coding Experts Group. Consultado em 13 de setembro de 2019 
  6. Bovik, Alan C. (2009). The Essential Guide to Video Processing. [S.l.]: Academic Press. p. 355. ISBN 9780080922508 
  7. Ahmed, Nasir; Mandyam, Giridhar D.; Magotra, Neeraj (17 de abril de 1995). «DCT-based scheme for lossless image compression». Digital Video Compression: Algorithms and Technologies 1995. 2419: 474–478. Bibcode:1995SPIE.2419..474M. doi:10.1117/12.206386 
  8. Komatsu, K.; Sezaki, K. (1998). «Reversible discrete cosine transform». Proceedings of the 1998 IEEE International Conference on Acoustics, Speech and Signal Processing, ICASSP '98 (Cat. No.98CH36181). 3. pp. 1769–1772. ISBN 0-7803-4428-6. doi:10.1109/ICASSP.1998.681802 
  9. Menezes, Alfred J.; van Oorschot, Paul C.; Vanstone, Scott A. (16 de outubro de 1996). Handbook of Applied Cryptography. [S.l.]: CRC Press. ISBN 978-1-4398-2191-6 
  10. Chanda, P.; Elhaik, E.; Bader, J.S. (2012). «HapZipper: sharing HapMap populations just got easier». Nucleic Acids Res. 40 (20): e159. PMC 3488212Acessível livremente. PMID 22844100. doi:10.1093/nar/gks709 
  11. Pratas, D.; Pinho, A.J.; Ferreira, P.J.S.G. (2016). Efficient compression of genomic sequences (PDF). Data Compression Conference. Snowbird, Utah 
  12. Mahoney, Matt (2010). «Data Compression Explained» (PDF). pp. 3–5 
  13. «Summary». 1 de setembro de 2016. Cópia arquivada em 1 de setembro de 2016 
  14. a b Deorowicz, Sebastian. Universal Lossless Data Compression Algorithms (PDF) (Tese). Silesian University of Technology. pp. 93–95. Cópia arquivada (PDF) em 28 de agosto de 2024 
  15. Maulidina, Alysha Puti; Wijaya, Rachel Anastasia; Mazel, Kimberly; Astriani, Maria Seraphina (2024). Comparative Study of Data Compression Algorithms: Zstandard, zlib & LZ4. Col: Communications in Computer and Information Science. 2198. [S.l.: s.n.] pp. 394–406. ISBN 978-3-031-72283-7. doi:10.1007/978-3-031-72284-4_24 
  16. Gupta, Apoorv; Bansal, Aman; Khanduja, Vidhi (22 de fevereiro de 2017). «Modern lossless compression techniques: Review, comparison and analysis». 2017 Second International Conference on Electrical, Computer and Communication Technologies (ICECCT). [S.l.]: IEEE. pp. 1–8. ISBN 978-1-5090-3239-6. doi:10.1109/ICECCT.2017.8117850 
  17. Sayood 2002, p. 41.
  18. a b Bell, Tim (2015). «Surprising Computer Science». Informatics in Schools. Curricula, Competences, and Competitions. Col: Lecture Notes in Computer Science. 9378. [S.l.: s.n.] pp. 1–11. ISBN 978-3-319-25395-4. doi:10.1007/978-3-319-25396-1_1  Veja em particular pp. 8–9.
  19. Sayood 2002, p. 38.
  20. Li, Ming; Vitányi, Paul (1993). An Introduction to Kolmogorov Complexity and its Applications. New York: Springer. p. 102. ISBN 0-387-94053-7. Theorem 2.6 The function is not partial recursive. 
  21. Joshi, Mark (2015). «The Pigeonhole Principle». Proof Patterns. [S.l.: s.n.] pp. 19–23. ISBN 978-3-319-16249-2. doi:10.1007/978-3-319-16250-8_3 
  22. «.ZIP File Format Specification». PKWARE, Inc. capítulo V, seção J 

Leitura adicional

editar


📚 Artikel Terkait di Wikipedia

Codificação de vídeo de alta eficiência

de 2024  «ITU, ISO and IEC receive another Primetime Emmy for video compression». International Telecommunication Union. 26 de outubro de 2017. Consultado