int main () { // Abre a imagem em escala de cinza, e mantem uma copia colorida dela para desenhar a saida. Imagem* img = abreImagem (INPUT_IMAGE, 3); if (!img) { printf ("Erro abrindo a imagem.\n"); exit (1); } Imagem* img_out = criaImagem (img->largura, img->altura, 3); binariza_custom(img, img_out, THRESHOLD); salvaImagem (img_out, "limiarizacao.bmp"); int sig = 2; Imagem *img_out2 = criaImagem(img_out->largura, img_out->altura, img_out->n_canais); filtroGaussiano(img_out, img_out2, sig, sig, NULL); salvaImagem (img_out2, "filtro_sig2.bmp"); sig = sig * 2; Imagem *img_out3 = criaImagem(img_out->largura, img_out->altura, img_out->n_canais); filtroGaussiano(img_out, img_out3, sig, sig, NULL); salvaImagem (img_out3, "filtro_sig4.bmp"); sig = sig * 2; Imagem *img_out4 = criaImagem(img_out->largura, img_out->altura, img_out->n_canais); filtroGaussiano(img_out, img_out4, sig, sig, NULL); salvaImagem (img_out4, "filtro_sig8.bmp"); Imagem *img_soma1 = criaImagem(img_out->largura, img_out->altura, img_out->n_canais); Imagem *img_soma_final = criaImagem(img_out->largura, img_out->altura, img_out->n_canais); soma(img_out2, img_out3, 0.5, 0.5, img_soma1); soma(img_soma1, img_out4, 0.5, 0.5, img_soma_final); salvaImagem (img_soma_final, "filtro_soma.bmp"); Imagem *img_final = criaImagem(img_out->largura, img_out->altura, img_out->n_canais); soma(img_soma_final, img, 0.4, 0.8, img_final); salvaImagem (img_final, "final.bmp"); // Limpez4a. //free (c3omponentes); destroiImagem (img_out4); destroiImagem (img_out3); destroiImagem (img_out2); destroiImagem (img_out); destroiImagem (img); return (0); }
int main(int argc, char** argv) { /** ALOCAÇÃO DE VARIÁVEIS ****************************************/ Imagem *img; /* Estrutura que guarda imagem genérica */ int altura; /* Dimensao da estrutura imagem */ int largura; /* Dimensão da estrutura imagem */ Linha cab; /* Lista com comando para criar linhas */ Linha *atual; /* Ponteiro auxiliar para fazer linhas */ Imagem *R, *G, *B; /* Canais de cores para imagem */ int totalElementos; /* Auxiliar para nº de regiões achadas */ int i; /* Contador */ CelRegiao cabecas[MAX_REGIOES]; /* Vetor para cabeças das regiões de pixel da imagem */ float cores[12][3]= /* Matriz para cores a serem colocadas nos canais */ { {1.0, 0.0, 0.0}, /* 0 vermelho */ {0.0, 1.0, 0.0}, /* 1 verde */ {0.0, 0.0, 1.0}, /* 2 azul */ {1.0, 1.0, 0.0}, /* 3 amarelo */ {1.0, 0.0, 1.0}, /* 4 magenta */ {0.0, 0.0, 0.0}, /* 5 preto */ {0.2, 0.7, 0.4}, /* 6 verde 2 */ {0.7, 0.4, 0.2}, /* 7 marrom */ {0.0, 1.0, 1.0}, /* 8 ciano */ {0.5, 0.5, 0.5}, /* 9 cinza */ {1.0, 1.0, 1.0}, /* 10 branco */ {0.0, 0.0, 0.0} /* 11 preto */ }; /** LEITURA DE ARQUIVO DE ENTRADA ********************************/ cab.prox = NULL; leMondrian(argv[1], &altura, &largura, &cab); printf("\n(LEITURA)\t\taltura = %d largura = %d\n", altura, largura); /** FUNDO E BORDAS ***********************************************/ img = criaImagem(altura, largura); pintaImagem(img, COR_FUNDO); printf("(FUNDO) \t\tTudo OK\n"); desenhaBorda(img, COR_BORDA); printf("(BORDAS) \t\tTudo OK\n"); /** DESENHO DE LINHAS ********************************************/ for(atual = cab.prox; atual != NULL; atual = atual->prox) { printf("%c\n", atual->tipo); desenhaLinha(img, atual, COR_BORDA); } printf("(LINHAS) \t\tTudo OK\n"); /** SEGMENTAÇÃO DE REGIÕES ***************************************/ totalElementos = segmentaRegioes(img, cabecas); printf("total de elementos = %d\n", totalElementos); printf("(REGIOES) \t\tTudo OK\n"); printf("cabela: cabeca[0].tamanho = %d", cabecas[0].tamanho); /** CRIAÇÃO DOS CANAIS DE CORES **********************************/ R = criaImagem(altura, largura); copiaImagem(R, img); /* Vermelho */ G = criaImagem(altura, largura); copiaImagem(G, img); /* Verde */ B = criaImagem(altura, largura); copiaImagem(B, img); /* Azul */ printf("(MALLOC FILTROS) \tTudo OK\n"); printf("(copia) \t\tTudo OK\n"); /** PINTURA ******************************************************/ for(i = 0; i < totalElementos; i++) { printf("%d", i); pintaRegiao(&cabecas[i].cabpix, R, G, B, cores[i%12]); printf("verm = %f, verde = %f, azul = %f\n", cores[i][0], cores[i][1], cores[i][2]); }; /** SALVAR IMAGENS ***********************************************/ salvaImagem("img", img); salvaImagem("R", R); salvaImagem("G", G); salvaImagem("B", B); salvaImagemRGB(argv[2], R, G, B); printf("(SALVAR) \t\tTudo OK\n"); /** LIBERAÇÃO DE MEMÓRIA *****************************************/ free(img); free(R); free(G); free(B); printf("(FREE) \t\t\tTudo OK\n"); return 0; }