• Nenhum resultado encontrado

UMA METODOLOGIA PARA ANÁLISE DE MÉTODOS DE COMPACTAÇÃO

N/A
N/A
Protected

Academic year: 2021

Share "UMA METODOLOGIA PARA ANÁLISE DE MÉTODOS DE COMPACTAÇÃO"

Copied!
13
0
0

Texto

(1)

UMA METODOLOGIA PARA ANÁLISE DE MÉTODOS DE COMPACTAÇÃO

Antonio Alessandro Rocha Beserra* Orientador: Daniel Faustino Lacerda de Souza, Prof. Dr.

Coorientador: Leandro Carlos de Souza, Prof. Dr.

RESUMO

Com diversos algoritmos de compressão presentes na literatura e novos sendo propostos pelos pesquisadores, as tecnologias que se utilizam deles não detém de uma metodologia de comparação e análise objetivas para facilitar uma futura escolha. Neste sentido, propõe-se uma metodologia baseada no método estatístico bootstrap de tal forma que vise facilitar a análise de métodos de compressão entre si tomando um parâmetro de comparação como critério. A fim de testar a metodologia proposta, um framework é implementado e um estudo de caso usando a taxa de compressão como parâmetro de análise é elaborado e seus resultados são discutidos.

Palavras-chave: Algoritmo de compressão. Análise. Metodologia.

ABSTRACT

With several compression algorithms present in the literature and new ones being proposed by the researchers, the technologies that use them do not have an objective comparison and analysis methodology to facilitate a future choice. In this sense, it is proposed a methodology based on the bootstrap statistical method in such a way that it aims to ease the analysis of compression methods among themselves by taking a comparison parameter as criterion. In order to test the proposed methodology, a framework is implemented and a case study using the compression ratio as the analysis parameter is elaborated and his results are discussed.

Keywords: Compression algorithm. Analysis. Methodology.

1 INTRODUÇÃO

Os algoritmos de compactação propostos na literatura são classificados conforme a metodologia adotada para compactar os dados. Como exemplos temos os compactadores baseados em códigos de comprimento variável, como a codificação de Huffmann; em dicionários, como o Lempel-Ziv-Welch (LZW); e em transformações de dados contextuais, como o Run Length Encoding (RLE) (DREW; LI; LIU, 2014; HAECKY; MCANLIS, 2016;

SALOMON, 2004).

Com o aumento do número de serviços oferecidos na Internet, como as redes sociais e serviços de stream, fluxos de dados maiores passaram a ser transmitidos, como imagens e vídeos. Para manter a integridade e/ou confidencialidade desses dados, foram desenvolvidos protocolos que se incorporaram aos protocolos de comunicação existentes, tais como o IP Security (IPSec) e o Security Socket Layer (SSL).

Em suas especificações, esses protocolos opcionalmente utilizam de compactação a fim de enviar um maior fluxo de dados em um menor tempo (RFC, 2011a; RFC, 2011b).

Entretanto, não há qualquer regra determinando qual algoritmo de compactação será utilizado,

* Graduando em Ciência da Computação. E-mail: antonio.alessandro@ufersa.edu.br

(2)

apenas um consenso entre as partes comunicantes é realizado a fim de que utilizem o mesmo método. Diante desse contexto surge a necessidade de se estabelecer métricas e parâmetros confiáveis em relação aos algoritmos de compactação a fim de se classificá-los e facilitar futuras decisões em protocolos em que eles são amplamente utilizados.

Este trabalho propôs uma metodologia estatística baseada no bootstrap para análise e comparação dentre alguns métodos de compressão na literatura através da avaliação de intervalos de confiança. Desta forma, realizou-se um estudo de caso para investigar se o tipo de dado impacta diretamente na taxa de compressão do algoritmo utilizado e indicar uma lista de recomendações de uso de algoritmos de compactação de forma a otimizar o uso deles.

Na seção 2 são apresentados alguns trabalhos relacionados com o tema desta pesquisa. Na seção 3, é apresentado um embasamento teórico que suporta o desenvolvimento deste trabalho. Na seção 4 é explicado o framework que implementa a metodologia proposta.

Na seção 5 é discutido um estudo de caso e seus resultados. E na seção 6 são levantadas as considerações finais assim como propostas de trabalhos futuros.

2 TRABALHOS RELACIONADOS

Alguns trabalhos da literatura exploraram a análise e a comparação de desempenho de diferentes algoritmos de compressão em diferentes contextos. Hussain, Al-fayadh e Radi (2018) discutiram as principais técnicas de compressão voltadas para imagens na literatura existente. Eles agruparam entre si e analisaram as técnicas sem perdas e com perdas. No Quadro 1 é apresentado o resumo feito em relação aos algoritmos de compressão sem perdas.

Quadro 1 – Comparação das principais técnicas de compressão sem perdas

Técnica Taxa de compressão Problemas

Codificação aritmética Baixa A codificação é ótima somente quando todas as probabilidades de ocorrência dos símbolos são uma potência inteira de ½.

Codificação de Huffmann Baixa Processamento matemático significante. Determina o alfabeto de símbolos com uma distribuição de probabilidades conhecida.

Codificação preditiva sem perdas Baixa Requer uma boa estrutura no preditor.

Fonte: HUSSAIN; AL-FAYADH; RADI (2018)

Kalajdzic, Ali e Patel (2015) desenvolveram um novo algoritmo para compressão de pequenas mensagens de texto, b64pack, e compararam com programas de compressão do UNIX: compress, gzip e bzip2. A velocidade de compressão foi avaliada ao usá-los para comprimir um conjunto de 50.619 mensagens e analisando o tempo médio de compressão por mensagem. Eles também compararam a taxa de compressão ao comprimir 1984 mensagens com mais de 160 caracteres e analisaram quantas versões comprimidas ficaram com 160 ou menos caracteres em tamanho.

Campobello et al. (2015) apresentaram um algoritmo de compressão sem perdas de baixos consumo de memória e complexidade voltado para redes de sensores sem fio. Eles comprimiram um conjunto de 100 blocos de dados cada um composto por 100 palavras de 16 bits cada, referentes a estatísticas meteorológicas como temperatura e umidade do ar e compararam as médias e máximas das taxas de compressão com outros algoritmos de compressão voltados a esse contexto como S-Huffman, ND-Encoding e Two-Modal. Análises qualitativas também foram levantadas como a complexidade e o consumo de memória dos

(3)

algoritmos.

Antony e Ganapathy (2015) propuseram um algoritmo de predição intra seletiva para codificação sem perdas na codificação de vídeo de alta eficiência. Eles categorizaram 6 sequências de testes de 100 quadros cada conforme a resolução e quadros por segundo e comprimiram essas sequências comparando com outros algoritmos de compressão relacionados analisando a taxa de bits do vídeo comprimido e o tempo de codificação/decodificação.

Ghido e Tabus (2013) introduziram um algoritmo eficiente para calcular preditores lineares estéreos esparsos para compressão de áudio sem perdas. Eles extraíram os 10 segundos do meio de cada uma das 1191 trilhas de áudio de diversos gêneros musicais em formato WAVE a 44,1 KHz, 16 bit e stereo. Como critérios de comparação, eles analisaram a razão do tamanho total dos arquivos comprimidos pelo tamanho total dos arquivos originais em termos percentuais e o tempo médio de decodificação medido em múltiplos de tempo-real.

Além disso, para avaliar a complexidade dos algoritmos testados eles se basearam no número médio de multiplicações feitas para decodificar um valor de amostra. Com essa medida, também foi avaliado o pior caso de complexidade para um dos arquivos de teste.

Masmoudi e Puech (2014) modelaram um esquema que realiza tanto compressão sem perdas, através da codificação aritmética (AC, da sigla em inglês), como a encriptação de imagens, por meio de um gerador de números aleatórios. Eles comprimiram 12 imagens 8-bit em escala de cinza bem conhecidas da coleção Greyset2 da Universidade de Waterloo que variam de 464 x 352 a 672 x 498 pixels em tamanho. Foi avaliado o tamanho em bytes dos arquivos comprimidos comparando a versão estática da AC com o método proposto.

Chang et al. (2016) criaram um método de compressão para tabela de índices de quantização vetorial. Comparando com outros 4 métodos de compressão propostos por outros autores voltados para esse fim, eles comprimiram 4 imagens e analisaram a taxa de compressão e o tempo de execução dos algoritmos. Eles também analisaram a qualidade das imagens descomprimidas comparando com um outro método de um outro autor avaliando a relação sinal-ruído de pico (PSNR, da sigla em inglês).

Asif et al. (2015) conceberam um método de compressão quase sem perdas para dados de tráfego aplicando o princípio da codificação residual e com perdas. Eles comprimiram dados de velocidade obtidos de uma rede composta de 18101 segmentos de estrada em Singapura no período correspondente a Agosto de 2011 aplicando codificação de Huffmann em 4 modelos diferentes de baixa dimensão usados para representar os dados: a transformada discreta de cosseno, a decomposição em valores singulares, a fatorização de matriz não-negativa e a wavelet. Como critérios de análise, eles avaliaram a taxa de compressão e a PSNR para diferentes níveis de tolerância.

Através de uma análise dos trabalhos presentes na literatura de compressão de dados, observa-se que não há um consenso entre os pesquisadores sobre como avaliar ou analisar diversos métodos de compressão entre si. Critérios como taxa de compressão, velocidade de codificação ou de decodificação são levados em conta a depender do contexto da pesquisa, mas a metodologia usada para analisá-los é variada.

3 REFERENCIAL TEÓRICO

Nesta seção é apresentado um resumo das discussões feitas por outros autores sobre os assuntos nos quais se baseiam este trabalho.

3.1 Algoritmos de Compressão

As tecnologias usadas no armazenamento de dados vêm gradativamente melhorando,

(4)

assim como também vem aumentando o volume de dados gerados pela atividade antrópica.

No entanto, o segundo está se desenvolvendo mais rápido que o primeiro (HAECKY;

MCANLIS, 2016).

Para reduzir a quantidade de dados processados e armazenados, algoritmos de compressão de dados têm sido estudados e aprimorados desde então. Tais algoritmos foram categorizados em duas classes: algoritmos de compressão sem perdas, em que a versão decodificada do dado é idêntica bit-a-bit à versão fonte; e algoritmos de compressão com perdas, em que a versão decodificada não é mais uma cópia da versão fonte. Dentre os algoritmos de compressão sem perdas, podemos citar a codificação de Huffmann, Run Length Encoding (RLE), Lempel-Ziv 1 (LZ1) e Lempel-Ziv-Welch (LZW) (DREW; LI; LIU, 2014).

RLE é um algoritmo de compressão que consiste em codificar um grupo contínuo de símbolos repetidos como uma tupla contendo esse único símbolo e o comprimento desse grupo. Devido a essa característica, tem-se vantagem da redundância espacial, principalmente presente em textos e imagens (SALOMON, 2004).

LZ1, também conhecido como LZ77, é um algoritmo baseado em dicionário proposto pelos autores que lhe deram o nome. Ele se baseia em símbolos já lidos no arquivo, presentes em uma janela de busca, como um dicionário para substituir as próximas ocorrências das mesmas sequências de símbolos pela posição de sua última ocorrência. Já o LZW, sucessor do LZ1, adota uma tática ligeiramente diferente. Ele insere entradas repetidas e cada vez mais longas em um dicionário conforme codifica o arquivo e então substitui uma cadeia de símbolos presente nele por um código associado a ela nesse dicionário (DREW; LI;

LIU, 2014).

A codificação de Huffmann é um algoritmo de codificação de comprimento variável.

Ela atribui códigos para símbolos do alfabeto presentes no arquivo de tal sorte que os símbolos mais repetidos têm os menores códigos, enquanto que os menos frequentes possuem os maiores. Para isso, é composta uma lista dos símbolos do alfabeto em ordem decrescente de frequência e uma árvore binária com um símbolo em cada folha de baixo para cima é construída. Iterativamente, os dois símbolos com as menores frequências são adicionados ao topo da árvore, deletados da lista e substituídos por um símbolo auxiliar representando-os conjuntamente. Quando a lista contém apenas um símbolo auxiliar, que representa o alfabeto inteiro, a árvore é completa e é percorrida a fim de determinar o código dos símbolos (SALOMON, 2004).

3.2 Bootstrap

Efron e Tibshirani (1993) introduziram o bootstrap como uma técnica computacional capaz de simular a partir de dados fornecidos e estimar o viés e a variância de uma determinada estatística, assim como também construir intervalos de confiança.

Suponha um conjunto de valores reais Ⲫ = {x1, x2, …, xn}. Tome B amostras independentes {Ⲫ*1, Ⲫ*2, …, Ⲫ*B}, todas de tamanho n, geradas aleatoriamente e com reposição, do conjunto Ⲫ. Define-se µ como a média desse conjunto.

Um intervalo de confiança é um conjunto de valores que um parâmetro pode assumir, mediante um erro pré determinado. Para calculá-lo, computa-se a média de cada uma das B amostras. Com um erro de confiança α × 100% (em que 0 ≤ α ≤ 1), o intervalo de confiança é obtido pelas médias referentes aos índices B × α/2 e B × (1 - α/2), arredondados para cima, do conjunto de médias ordenado. No Algoritmo 1 são mostrados os passos para a construção de intervalos de confiança usando os percentis bootstrap.

(5)

Algoritmo 1 – Construção de intervalo de confiança usando bootstrap

Entrada Conjunto de valores reais Ⲫ = {x1, x2, …, xn}; Número de amostras bootstrap: B;

Erro de confiança: α, em que 0 ≤ α ≤ 1;

Saída Intervalo de confiança: [a, b].

1: Para i=1:B Faça

2: amostrai <- uma amostra de Ⲫ, de tamanho n e com reposição;

3: mi <- média de amostrai; 4: Fim Para

5: Ordene o conjunto de médias {m1, m2, …, mB} em ordem crescente;

6: x <- round (B × α/2);

7: y <- round (B × (1 - α/2));

8: a <- mx; 9: b <- my;

Sejam dois intervalos de confiança bootstrap I1 e I2, gerados para as médias µ1 e µ2

de dois conjuntos Ⲫ1 e Ⲫ2. Pode-se analisar testes de hipóteses relacionados com elas através desses intervalos. Se o valor presente na hipótese nula não pertence ao intervalo, então ela deve ser rejeitada (EFRON; TIBSHIRANI, 1993).

A relação que há entre testes de hipóteses e intervalos de confiança facilita a comparação das médias de indicadores de desempenho quando vários métodos são analisados conjuntamente. Se há uma intersecção não-vazia entre os intervalos, consideram-se as médias como iguais. Se todos os valores em I1 são maiores que todos em I2 infere-se que µ1 > µ2. Sendo assim, os resultados do estudo de caso deste trabalho são mostrados através de intervalos de confiança gerados a partir dos percentis bootstrap advindos de distribuições de indicadores de desempenho, aplicados na avaliação dos métodos presentes na literatura.

4 FRAMEWORK PROPOSTO

Com o objetivo de estabelecer uma metodologia bem definida para o processo de comparação entre métodos de compactação de arquivos, foi desenvolvido um framework baseado no método estatístico Bootstrap. Na Figura 1 o modelo da arquitetura geral do framework proposto é apresentado.

Figura 1 – Arquitetura geral do framework

Fonte: Autoria própria

No framework, toma-se como entrada uma lista de arquivos a serem comprimidos e uma lista de algoritmos a serem analisados. Cada método de compressão da lista de algoritmos é instanciado para comprimir a lista de arquivos. Em cada execução dessas instâncias, é gerada uma lista do parâmetro de análise utilizado. O framework pode ser estendido para que esse parâmetro seja o tempo de execução do algoritmo testado, ou sua utilização de memória, assim como qualquer outra medida de desempenho pertinente a uma técnica de compressão e que possa ser quantificada objetivamente.

Após gerar essa lista contendo os parâmetros de análise, ela é tomada como entrada

(6)

no módulo estatístico do framework, que usa do método bootstrap para gerar e retornar os intervalos de confiança referentes aos algoritmos testados.

4.1 Desenvolvimento

O framework foi implementado em linguagem C++ para o sistema operacional Windows 10. Ele foi construído para se configurar a partir de um arquivo de configuração.

Nele são listados os algoritmos de compressão a serem testados e os diretórios onde se encontram os arquivos a serem comprimidos. A classe Properties foi projetada para ler esse arquivo e obter os devidos parâmetros de inicialização do framework.

Para avaliar a performance do resultado de um algoritmo de compressão é usada a taxa de compressão. Considere B0 como o número de bytes usados para representar o dado antes da compressão e B1 como o número de bytes usados para representar o dado depois da compressão, então define-se a taxa de compressão como B0/B1. Em geral, busca-se num método de compressão que sua taxa de compressão seja a maior possível, de preferência maior que 1. Caso ela seja menor que 1, o arquivo compactado acaba sendo maior que o original. Assim, quanto maior a taxa de compressão, melhor o algoritmo de compressão (DREW; LI; LIU, 2014).

Cada algoritmo de compressão é representado em uma classe que implementa a interface Compactor. Essa interface, por sua vez, possui os métodos encode, que recebe um caminho de um arquivo a ser compactado e retorna a taxa de compressão obtida para aquele arquivo; e decode, que recebe um caminho de um arquivo já compactado previamente e o decodifica, gerando o arquivo original. No Diagrama 1 é mostrado o diagrama de classes referente a esse módulo do framework.

Diagrama 1 – Diagrama de classes sobre o relacionamento entre as classes que encapsulam os algoritmos de compressão

Fonte: Autoria própria

Após inicializar os devidos parâmetros de configuração, para cada algoritmo na lista de algoritmos, comprime-se cada arquivo da lista de arquivos e se obtém a taxa de compressão para cada um. Todas as taxas de compressão são então armazenadas em um vetor.

Esse vetor é passado como argumento para o método run da classe Bootstrap para a geração dos intervalos de confiança, que é representado pela classe Interval. No Diagrama 2 é mostrado o diagrama de sequência para a execução desse módulo do framework.

(7)

Diagrama 2 – Diagrama de sequência da execução do framework

Fonte: Autoria própria

O framework foi desenhado para categorizar os arquivos por tipos. Sendo assim, no fim de sua execução é gerado um arquivo .csv com os registros dos dados obtidos: o algoritmo utilizado, o tipo dos arquivos comprimidos, o valor mínimo e o máximo do intervalo de confiança correspondente a essa emulação.

Para cada algoritmo na lista de algoritmos que será testada, comprime-se cada arquivo na lista de arquivos carregada nas configurações. De cada compressão rodada, obtém- se a taxa de compressão e ela é salva num vetor. Esse vetor é usado como entrada no método do bootstrap e um intervalo de confiança referente ao método de compressão é retornado. No algoritmo 2 é mostrado o passo-a-passo da execução do framework.

Algoritmo 2 Execução do framework

Entrada lista de arquivos files a serem comprimidos e lista de algoritmos de compressão algorithms a serem testados;

Saída n intervalos de confiança onde n = número de tipos de arquivos testados * número de algoritmos utilizados.

1: Para cada algoritmo alg : algorithms Faça 2: Para cada arquivo arq : files Faça 3: Comprima arq usando alg;

4: cr <- taxa de compressão obtida;

5: Adicione cr num vetor de taxas de compressão: crs;

6: FimPara

7: Execute o algoritmo bootstrap usando crs como entrada;

8: range <- intervalo de confiança obtido com essa emulação;

9: FimPara

5 ESTUDO DE CASO

Como estudo de caso para a metodologia proposta, coletaram-se quatrocentos arquivos de quatro tipos diferentes igualmente divididos em quantidade: vídeo, áudio, imagem e texto, com os respectivos formatos: avi, wav, tiff e txt. Tais formatos foram escolhidos por usarem quase ou nenhuma compactação ao apresentarem os dados em sua forma mais bruta possível.

Os algoritmos de compressão que implementam a interface Compactor escolhidos foram os previamente citados na seção 3.1: codificação de Huffmann, LZW, LZ77 e RLE.

Para a leitura dos arquivos, foi considerada como se fossem arquivos binários e o tamanho da palavra foi definido em um byte. Para a execução do algoritmo bootstrap, foram considerados 2000 amostras bootstrap e um nível de confiança de 95%.

(8)

5.1 Resultados

Para cada amostra de cem arquivos do mesmo tipo, foi gerada uma tabela com 4 registros contendo o algoritmo de compressão utilizado e o intervalo de confiança associado a ele, juntamente de um gráfico representando esses intervalos. Definiu-se a variação do intervalo como a diferença absoluta entre os extremos dele e a variação relativa como a variação em relação ao extremo mínimo do intervalo em termos percentuais conforme as equações 1 e 2. Nas tabelas abaixo, referentes às estatísticas, os métodos com melhor performance estão em destaque.

Variação=b−a (1)

Variação relativa=Variação/a ×100 % (2)

Na Tabela 1 são exibidas as estatísticas geradas para os arquivos de vídeo. Observa- se que os algoritmos que apresentaram melhores taxas de compressão foram a codificação de Huffmann e o RLE e que esses apresentam performances similares visto que seus intervalos se interceptam. Contudo, por apresentar uma menor variação relativa, o RLE se manteve mais estável em relação ao seu concorrente.

Os outros algoritmos, LZ7 e LZW, performaram com uma taxa de compressão abaixo de um, já que o arquivo comprimido gerado ficou maior que o original e apresentaram uma instabilidade nos intervalos superior aos demais. No geral, constata-se que o overhead de desempenho gerado pelas técnicas de compressão sem perdas não compensam um ganho de armazenamento de, no máximo, aproximadamente 1,72%.

No Gráfico 1 é exibido o gráfico para esses intervalos de confiança. A diferença de desempenho e estabilidade dos dois melhores casos é notória em relação aos dois piores.

Tabela 1 – Estatísticas geradas para os arquivos de vídeo

Algoritmo Mínimo Máximo Variação Variação relativa HUF 1,01078 1,01716 0,00638 0,63%

LZ7 0,768323 0,790052 0,021729 2,83%

LZW 0,827177 0,854179 0,027002 3,26%

RLE 1,0105 1,01636 0,00586 0,58%

Fonte: Autoria própria

Gráfico 1 – Intervalos de confiança gerados para os arquivos de vídeo

Fonte: Autoria própria

Na Tabela 2 são exibidas as estatísticas geradas para os arquivos de áudio. Observa- se que os algoritmos que apresentaram melhores taxas de compressão foram a codificação de Huffmann e o RLE. Embora seus intervalos se interceptem por pouco, já que o extremo máximo do intervalo de RLE é ligeiramente maior que o extremo mínimo do intervalo de

(9)

Huffmann, todo o intervalo de Huffmann está acima de um, o que implica que o algoritmo comprimiu eficientemente a amostra de arquivos. O mesmo não pode ser dito do RLE visto que seu extremo mínimo se apresenta menor que um. Além de comprimir melhor, a estabilidade de Huffmann se apresentou melhor do que a do RLE.

Os outros dois algoritmos performaram uma taxa de compressão abaixo de um, além de apresentarem maior instabilidade em relação a seus concorrentes, o que os torna ineficientes perante esse tipo de dado. No Gráfico 2 é mostrado o gráfico para esses intervalos de confiança.

Tabela 2 – Estatísticas geradas para os arquivos de áudio

Algoritmo Mínimo Máximo Variação Variação relativa

HUF 1,0712 1,1293 0,0581 5,42%

LZ7 0,813681 0,862646 0,048965 6,02%

LZW 0,87865 0,978875 0,100225 11,41%

RLE 0,996895 1,07123 0,074335 7,46%

Fonte: Autoria própria

Gráfico 2 – Intervalos de confiança gerados para os arquivos de áudio

Fonte: Autoria própria

Na Tabela 3 são exibidas as estatísticas geradas para os arquivos de imagem. Mesmo o RLE apresentando o melhor intervalo de confiança, nenhum dos algoritmos conseguiu gerar intervalos acima de um, o que indica que, da forma como estão implementados e processando os arquivos, eles não foram desenhados para comprimir imagens de forma ótima. Além de seu desempenho superior aos demais, sua estabilidade também provou ser a melhor, com apenas 0,02% de variação relativa nos extremos do intervalo.

No Gráfico 3 é apresentado o gráfico para esses intervalos de confiança. Observa-se que a variação dos extremos do intervalo de confiança para o RLE é tão pequena em relação aos demais que a escala utilizada no gráfico representa esse intervalo como um mero traço.

Tabela 3 – Estatísticas geradas para os arquivos de imagem

Algoritmo Mínimo Máximo Variação Variação relativa HUF 0,980639 0,986402 0,005763 0,59%

LZ7 0,719733 0,722419 0,002686 0,37%

LZW 0,67689 0,685077 0,008187 1,21%

RLE 0,995823 0,996023 0,0002 0,02%

Fonte: Autoria própria

(10)

Gráfico 3 – Intervalos de confiança gerados para os arquivos de imagem

Fonte: Autoria própria

Na Tabela 4 são exibidas as estatísticas geradas para os arquivos de texto. Embora o RLE tenha apresentado menor instabilidade nos extremos de seu intervalo, foi o LZW que performou melhor em relação aos demais devido a seu intervalo não se interceptar com nenhum outro. Em relação aos outros tipos de arquivos, esses algoritmos, de maneira geral, performaram melhor pois tomaram vantagem de processarem os arquivos byte a byte, que é o tamanho de um char.

No Gráfico 4 é mostrado o gráfico para esses intervalos de confiança.

Tabela 4 – Estatísticas geradas para os arquivos de texto

Algoritmo Mínimo Máximo Variação Variação relativa

HUF 1,3737 1,4505 0,0768 5,59%

LZ7 1,43252 1,49961 0,06709 4,68%

LZW 1,71701 1,77174 0,05473 3,19%

RLE 1,11915 1,13775 0,0186 1,66%

Fonte: Autoria própria

Gráfico 4 – Intervalos de confiança gerados para os arquivos de texto

Fonte: Autoria própria

Com a análise desses 4 algoritmos para esses 4 tipos de arquivos feita, encerrou-se o estudo de caso com a metodologia proposta.

6 CONCLUSÃO

Este trabalho propôs a utilização de uma metodologia estatística para analisar algoritmos de compressão entre si mediante um ou mais critérios quantitativos de comparação. Tal metodologia foi implementada em um framework composto por dois módulos: o compressor e o estatístico.

Como estudo de caso, para o módulo compressor foram analisados 4 algoritmos de

(11)

compressãos: codificaçao de Huffmann, LZW, RLE e LZ77. O parâmetro de comparação utilizado para análise foi a taxa de compressão. Já para o módulo estatístico, foi utilizado o método bootstrap para a geração de intervalos de confiança usados na análise dos métodos.

Os testes foram realizados conforme o tipo de arquivo. Para arquivos de vídeo, Huffmann e RLE performaram melhor que os outros mas apresentaram poucos ganhos em compressão; para os de áudio, os mesmos performaram melhor, mas Huffmann manteve-se superior por não haver comprimido com taxa de compressão menor que 1; para os de imagem, RLE foi o melhor mas nenhum obteve taxas de compressão maior que 1 e para os de texto, LZW superou os demais.

Como trabalhos futuros, propõe-se a extensão do framework para a generalização do parâmetro de comparação a ser utilizado, não se limitando apenas à taxa de compressão. Uma outra proposta é a adição de um terceiro módulo, de relatório, onde não apenas um arquivo csv seria gerado contendo as estatísticas como também gráficos comparando os intervalos de confiança entre os métodos analisados seriam plotados na interface do programa.

REFERÊNCIAS

ANTONY, Abhilash; GANAPATHY, Sreelekha. Highly efficient near lossless video compression using selective intra prediction for HEVC lossless mode. AEU - International Journal Of Electronics And Communications, [s. l.], v. 69, p. 1650-1658, july 2015.

Disponível em: https://doi.org/10.1016/j.aeue.2015.07.019. Acesso em: 8 fev. 2019.

ASIF, Muhammad T. et al. Near-Lossless Compression for Large Traffic Networks. IEEE Transactions On Intelligent Transportation Systems, [s. l.], v. 16, p. 1817-1826, aug.

2015. Disponível em: https://doi.org/10.1109/TITS.2014.2374335. Acesso em: 11 fev. 2019.

CAMPOBELLO, Giuseppe et al. Comparison of local lossless compression algorithms for Wireless Sensor Networks. Journal Of Network And Computer Applications, [s. l.], v. 47, p. 23-31, jan. 2015. Disponível em: https://doi.org/10.1016/j.jnca.2014.09.013. Acesso em: 7 fev. 2019.

CHANG, Chin-chen et al. Very efficient variable-length codes for the lossless compression of VQ indices. Multimedia Tools And Applications, [s. l.], v. 75, p. 3537-3552, mar. 2016.

Disponível em: https://doi.org/10.1007/s11042-015-2463-2. Acesso em: 10 fev. 2019.

DREW, Mark S.; LI, Ze-nian; LIU, Jiangchuan. Fundamentals of Multimedia. 2nd ed. Nova Iorque: Springer, 2014.

EFRON, B.; TIBSHIRANI, R.. An Introduction to the Bootstrap. [S. l.]: Chapman & Hall/

CRC, 1993.

GHIDO, Florin; TABUS, Ioan. Sparse Modeling for Lossless Audio Compression. IEEE Transactions On Audio, Speech, And Language Processing, [s. l.], v. 21, p. 14-28, jan.

2013. Disponível em: https://doi.org/10.1109/TASL.2012.2211014. Acesso em: 8 fev. 2019.

HAECKY, Aleks; MCANLIS, Colt. Understanding Compression: Data Compression for Modern Developers. Califórnia: O'Reilly Media, 2016.

(12)

HUSSAIN, A. J.; AL-FAYADH, Ali; RADI, Naeem. Image compression techniques: A survey in lossless and lossy algorithms. Neurocomputing, [s. l.], v. 300, p. 44-69, july 2018.

Disponível em: https://doi.org/10.1016/j.neucom.2018.02.094. Acesso em: 7 fev. 2019.

KALAJDZIC, Kenan; ALI, Samaher H.; PATEL, Ahmed. Rapid lossless compression of short text messages. Computer Standards & Interfaces, [s. l.], v. 37, p. 53-59, jan. 2015.

Disponível em: https://doi.org/10.1016/j.csi.2014.05.005. Acesso em: 8 fev. 2019.

MASMOUDI, Atef; PUECH, William. Lossless chaos-based crypto-compression scheme for image protection. IET Image Processing, [s. l.], v. 8, p. 671-686, feb. 2014. Disponível em:

https://doi.org/10.1049/iet-ipr.2013.0598. Acesso em: 10 fev. 2019.

RFC 6071, Request for Comments: 6071. IP Security (IPsec) and Internet Key Exchange (IKE) Document Roadmap, 2011a. Disponível em: https://tools.ietf.org/html/rfc6071.

Acesso em: 2 nov. 2018.

RFC 6101, Request for Comments: 6101. The Secure Sockets Layer (SSL) Protocol Version 3.0, 2011b. Disponível em: https://tools.ietf.org/html/rfc6101. Acesso em: 2 nov.

2018.

SALOMON, David. Data Compression. 3rd ed. Nova Iorque: Springer, 2004.

(13)

Referências

Documentos relacionados

autoincriminação”, designadamente através da indicação de exemplos paradigmáticos. Sem prejuízo da relevância da matéria – traduzida, desde logo, no número e

Para Piaget, a forma de raciocinar e de aprender da criança passa por estágios. Por volta dos dois anos, ela evolui do estágio sensório motor, em que a ação envolve os

A apixaba- na reduziu o risco de AVE e embolismo sistêmico em mais de 50%: houve 51 eventos entre os pacientes do grupo apixabana versus 113 no grupo do AAS

Mesmo com suas ativas participações na luta política, as mulheres militantes carregavam consigo o signo do preconceito existente para com elas por parte não somente dos militares,

O facto da execução das tarefas do plano não exigirem um investimento avultado a nível das tarefas propostas é possível neste caso em concreto visto que na Empresa A

Our contributions are: a set of guidelines that provide meaning to the different modelling elements of SysML used during the design of systems; the individual formal semantics for

São considerados custos e despesas ambientais, o valor dos insumos, mão- de-obra, amortização de equipamentos e instalações necessários ao processo de preservação, proteção

Como todos os outros seres humanos, o operador também é construtor da realidade e carrega consigo “experiências vividas, ideologias e valores que amoldam a sua