O que deve ser feito na Atividade 6:
Abrir o arquivo original;
Abrir o arquivo novo;
Ler o cabeçalho do arquivo original;
Ler os números do arquivo original e ao mesmo tempo ir gravando os números no arquivo novo de acordo com as opções de Negativo ou de Alargamento de Contraste, cada uma dessas opções possuem um fórmula específica;
Exemplo do laço para ler e gravar:
//Depois que leu o cabeçalho:
do{
fscanf(arquivooriginal,"%s",&gravar);
numero = atof(gravar);
if feof(arquivooriginal) break;
if(opcao = = 1) fprintf(arquivonovo, "%.0f ",255-numero);
if(opcao = = 2) fprintf(arquivonovo, "%.0f ",255/6.4 * log(numero+128));
}while (!feof(arquivooriginal));
Obs. Opção 1 é para o Negativo e Opção 2 é para o Alargamento de Contraste.
Acho que isso já ajuda, visto que nos posts já tem as funções para abrir o arquivo original, abrir o arquivo novo,ler o cabeçlho e fechar os arquivos abertos.
Só lembrando para abrir os arquivos:
//Original - abrir um arquivo que já existe para a leitura
if ((arquivooriginal = fopen("C:/tc/BIN/clown.pgm", "rt"))== NULL)
{
fprintf(stderr, "Erro ao abrir o arquivo.\n");
return 1;
}
//Novo - abrir um arquivo que já existe e se não existir ele cria o arquivo
arquivonovo = fopen("C:/tc/BIN/clownNOVO.pgm", "wt");
4 comentários:
ehhhh...da pra ter uma boa ideia do q tem q faze xDD
tenho q faze o meu ainda hunf
Betão, pode explicar a formula do contraste ?
Vamos lá:
No exemplo que o professor deu diz que a função é:
s = c log(1+|r|)
Em que "c" é uma constante da escala, e a função logarítica desempenha a função desejada. Quando essa função for linearmente escalada para exibição num sistema de 8 bits, os valores mais claros dominarão a exibição.(Nosso caso!)
Nesse caso, os valores de log(1+|r|) variam de 0 a 6.4.
O valor 255 é o número máximo de tons de cinza, que é especificado no próprio arquivo, sendo assim:
c = 255/0 a 6.4.
No log(1+|r|): "1" equivale ao número lido no momento.
E "r" é o nível de limiarização da imagem, podendo ser alterado para melhorar ou piorar o efeito de Alargamento de Contraste.
Resultado:
255/0 a 6.4 * log(numero + r)
Não ajudei em nada né?
ASHUahushuAShuashuASHUashuahus
xD
Postar um comentário