Esempio n. 1
0
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);
}
Esempio n. 2
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;
}