Compressão e processamento de imagens PGM • C • Estruturas de Dados • Manipulação de Bits
- Sobre o Projeto
- Estrutura do Projeto
- Funcionalidades
- Compilação
- Tecnologias
- Autoria
O projeto a seguir consiste na compressão, manipulação e processamento de imagens no formato PGM (Portable GrayMap). Esse formato de imagem é considerado um raster, ou seja, é baseado em pixels, e permite o armazenamento de imagens em escala de cinza, de preto a branco. Ele foi implementado em um ambiente de trabalho acadêmico utilizando exclusivamente a Linguagem C de Programação para que fosse aperfeiçoado o uso dessa linguagem pelos alunos de maneira prática, afim de que os dicentes de Laboratório de Programação do IFCE pudessem compreender de maneira completa como é a transição de problemas realistas de alto nível para a codificação em baixo nível, tornando assim a condensação conteúdo mais direcionada para o uso da programação em um contexto de soluções reais.
Imagens de teste no formato .pgm:
- img01.pgm
- img02.pgm
- img03.pgm
- img04.pgm
- img05.pgm
- macaco.pgm
Arquivos de cabeçalho:
- codificador.h
- decodificador.h
- pgm.h
- struct.h
- manipuladorDeBits.h
Arquivos em C:
- codificador.c
- encoder.c
- decodificador.c
- decoder.c
- manipuladorDeBits.c
- pgm.c
As funcionalidades do projeto incluem desde a entrada da imagem do arquivo em pgm, seu processamento e sua compressão até a sua decodifiação para ser reconstruída de maneira comprimida e ser gerada para visualização. A seguir, segue de maneira listada cada uma dessas funcionalidades:
-
Leitura de imagens PGM: É capaz de processar arquivos de imagens no formato
.pgmpara processamento. -
Codificação de imagens: Aplica técnicas de compressão e codificação para reduzir o tamanho das imagens através de variados artifícios da
Linguagem Cde Programação. -
Decodificação de imagens: Reconstrói imagens a partir de dados codificados, garantindo que não ocorra alterações no conteúdo original.
-
Manipulação de bits: Permite operações de leitura e escrita de bits para codificação eficiente.
-
Gerenciamento de dados estruturados: Utiliza estruturas de dados para organizar informações das imagens e da codificação.
-
Execução modular: Código organizado em módulos para facilitar a compreensão de código e realizar possíveis alterações com mais eficiência e agilidade.
-
Compatibilidade com dataset de teste: O código realiza seu processo de compressão de imagens de maneira sastifatória com todos os arquivos do formato de imagem
.pgmpresentes no data set e no material disponibilizado pelo professor.
A compilação do projeto é feita de maneira sucinta e direta, exigindo apenas a utilização de 3 comandos:
- Passo 1: Digite o comando "
make" no terminal (Esse comando é a ferramenta que executa ações baseadas em regras e dependências definidas no Makefile). - Passo 2: Digite o comando "
./encoder ./dataset/img01.pgm bitstream.bin" (Esse comando irá gerar o bitstream da imagem fornecida). - Passo 3: Digite o comando "
./decoder bitstream.bin reconstruida.pgm" (Esse comando irá gerar a imagem que foi comprimida a partir do bitstream). - Passo 4: Digite o comando "make clean" (Esse comando irá limpar os arquivos
.ogerados pelomakee permitirá que o comando make seja executado novamente).
O projeto foi desenvolvido utilizando as seguintes tecnologias:
- Linguagem de programação: C
- Compilador: GCC (GNU Compiler Collection)
- Arquivo de configuração : Makefile (executado pela ferramenta make)
- Arquivos de imagem: Formato PGM (Portable Gray Map)
- Versionamento: Git/GitHub
- Editor de código: VS Code
Alunos do Instituto Federal de Educação Ciência e Tecnologia do Ceará - Campus Maracanaú
- Mariana Holanda
- Camila Santiago
- Andrey Pereira
- Mateus Pinheiro
- Professor orientador: Daniel Silva