#include #include #include #include "lib.h" /*********************** main ********************/ int main( int argc, char** argv ){ double result; IMAGE img1=0; int a,b,i,j,t,x,npixels,temp; int aux, aux1, aux2, aux3, div; IMAGE img2=0,img3=0; int divisao,*lista_elem; double S = 0.0, S1 = 0.0; int minimo, maximo, N; /* Ler imagem de entrada */ img1=Input_PBM(argv[1]); if (img1 == 0) { printf ("Nao ha arquivo de entrada('%s')\n", argv[1]); exit (2); } printf("25\n"); for(N=3; N<52/*im->info->nc*/; N=N+2) { S=0.0; copy(&img2,img1); divisao = (int) N / 2; for(i=divisao*2; i < img1->info->nr-divisao*2; i++) { for(j=divisao*2; j < img1->info->nc-divisao*2; j++) { S = S + img1->data[i][j]; } } //EROSAO for(i=0; i < img1->info->nr; i++) { for(j=0; j < img1->info->nc; j++) { aux = i - divisao; aux1 = j - divisao; aux2 = i + divisao; aux3 = j + divisao; if(aux>=0 && aux1>=0 && aux2info->nr && aux3info->nc) { minimo=img1->data[aux][aux1]; for(t=aux; t <= aux2; t++) { for(x=aux1; x <= aux3; x++) { if(minimo>img1->data[t][x]) minimo=img1->data[t][x]; } } img2->data[i][j]=minimo; } } } copy(&img3,img2); for(i=divisao*2; i < img1->info->nr-divisao*2; i++) { for(j=divisao*2; j < img1->info->nc-divisao*2; j++) { aux = i - divisao; aux1 = j - divisao; aux2 = i + divisao; aux3 = j + divisao; if(aux>=divisao && aux1>=divisao && aux2info->nr-divisao && aux3info->nc-divisao) { maximo = img2->data[aux][aux1]; for(t=aux; t <= aux2; t++) { for(x=aux1; x <= aux3; x++) { if(maximodata[t][x]) maximo=img2->data[t][x]; } } img3->data[i][j]=maximo; } } } S1 = 0.0; for(i=divisao*2; i < img1->info->nr-divisao*2; i++) { for(j=divisao*2; j < img1->info->nc-divisao*2; j++) { S1 = S1 + img3->data[i][j]; } } result = (S-S1)/S; printf(" %.10f ",result); } printf("\n"); }