Universidade Federal De Minas Gerais
Departamento de Ciência da Computação
TP0: 50 Tons de Cinza Valor
Bárbara Costa Santana
1. INTRODUÇÃO
O programa “50Tons” realiza a mudança de dados de uma imagem, que entra no programa como sendo colorida (no formato PPM) e é retornada a mesma imagem porém em escala de cinza (no formato PGM).
Para facilitar a manipulação da entrada do arquivo, alocação da memória dinamicamente, conversão dos dados e a saída de um arquivo modificado, foi utilizado um TAD (Tipos Abstratos de Dados) que encapsula todas as funções referentes à manipulação da imagem e seus detalhes de implementação.
O objetivo do trabalho é facilitar a conversão das cores de uma imagem usando um programa em linguagem C.
2. IMPLEMENTAÇÃO
Estrutura de dados:
Para a implementação do trabalho foi criado uma matriz, alocada com memória dinamicamente, que armazenou os dados de uma imagem ppm com duas linhas e três colunas, cada coluna contendo três números inicialmente: void LerArquivo(FILE *entrada, int **matriz, int linhas, int colunas) { int i, j; while (!feof(entrada)) { for (i = 0; i < linhas; i++) { for (j = 0; j < colunas; j = j + 3) { fscanf(entrada, "%d", &matriz[i][j]); fscanf(entrada, "%d", &matriz[i][j + 1]); fscanf(entrada, "%d", &matriz[i][j + 2]);
Funções e procedimentos: int **AlocaMatriz ( int linhas, int colunas);
Esta função cria uma matriz dinamicamente de numero de linhas por numeor de colunas. Recebe como parâmetro o numero das linhas e colunas. void LerArquivo(FILE *entrada, int **matriz, int linhas, int colunas);
Essa funcao le o arquivo de entrada e armazena os valores na matriz. Recenbo todos esses valores como parâmetro do arquivo de entrada. void ConverteImagem (int linhas, int colunas, int **ppm, int **pgm);
Transforma a matriz ppm em uma matriz pgm usando a fórmula descrita na especificação.
Recebendo por parâmetro as colunas, linhas e as matrizes. void EscreveArquivoSaida(FILE *arquivoSaida,int linhas, int colunas, int **matriz);
Escreve a