#include double calculaBrilho(float R,float G,float B) { double brilho=((R*299)+(G*587)+(B*114))/1000; return brilho; } /* int diferenteFundo(double valor,double brilho,float aprox) { if ((valor>=(brilho*(1-aprox)))&&(valor<=(brilho*(1+aprox)))) return 0; else return 1; }*/ void exibe(image_brilho vet[],int fim) { int i; for (i=0;ibrilho==b) fprintf(stderr, "Brilho: %8.6f, x: %d, y: %d\n",list->brilho,list->x,list->y); b=list->brilho; list=list->prox; } } image_brilho *calculaListaBrilho(image_brilho *list,float_image_t *img,int repetido,int fim[]) { int i=0,j=0,pos=0; float R=0.0,G=0.0,B=0.0; double brilho=0.0; //int numPixels=(img->sz[1]*img->sz[2]); image_brilho vet[fim[0]]; // image_brilho *l=NULL; for (i=0;isz[1];i++) for (j=0;jsz[2];j++) { R=float_image_get_sample(img,0,i,j); G=float_image_get_sample(img,1,i,j); B=float_image_get_sample(img,2,i,j); brilho=calculaBrilho(R,G,B); //list=insertSortBrilho(list,brilho,i,j); vet[pos].brilho=brilho; vet[pos].x=i; vet[pos].y=j; pos++; } quickSort(vet,fim[0]); //exibe(vet,numPixels); list=geralLista(vet,fim,repetido); return list; } float retornaBrilhoPos(image_brilho *list,int pos) { int i=0; float brilho=0.0; while ((list!=NULL)&&(i<=pos)) { list=list->prox; i++; } brilho=list->brilho; return brilho; }