21 de maio de 2009

Projeto I

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:

Ionoshare disse...

ehhhh...da pra ter uma boa ideia do q tem q faze xDD
tenho q faze o meu ainda hunf

Zaraki disse...

Betão, pode explicar a formula do contraste ?

AAA disse...

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)

AAA disse...

Não ajudei em nada né?
ASHUahushuAShuashuASHUashuahus
xD