/*------------------------------------------------------*/ /* Prog : PriMeasure.c */ /* Auteur : */ /* Date : */ /* version : */ /* langage : C */ /* labo : DIRO */ /*------------------------------------------------------*/ /*------------------------------------------------*/ /* FICHIERS INCLUS -------------------------------*/ /*------------------------------------------------*/ #include #include #include #include #include "FonctionDemo.h" /*------------------------------------------------*/ /* DEFINITIONS -----------------------------------*/ /*------------------------------------------------*/ #define LENGTH 128 #define WIDTH 128 //------------------------------------------------ // VARIABLES GLOBALES ---------------------------- //------------------------------------------------ /*------------------------------------------------*/ /* FONCTIONS -------------------------------------*/ /*------------------------------------------------*/ //---------------------------------------------------------- // float PRI //---------------------------------------------------------- float PRI_Estimate(float** MatReg1,float** MatReg2,int lgth,int wdth) { int i,j,k,l; unsigned long int NbPairs,NbPairsGood; float PRI; const int EDGE=5; const int STEP=1; //LOOP[PRI] NbPairs=NbPairsGood=0; for(i=0+EDGE;i<(lgth-EDGE-STEP);i+=STEP) for(j=0+EDGE;j<(wdth-EDGE-STEP);j+=STEP) for(k=0+EDGE;k<(lgth-EDGE-STEP);k+=STEP) for(l=0+EDGE;l<(wdth-EDGE-STEP);l+=STEP) { NbPairs++; if ((MatReg1[i][j]==MatReg1[k][l])&&(MatReg2[i][j]==MatReg2[k][l])) NbPairsGood++; if ((MatReg1[i][j]!=MatReg1[k][l])&&(MatReg2[i][j]!=MatReg2[k][l])) NbPairsGood++; } //Distance PRI //printf("[NbPairsGood::%ld][NbPairs::%ld]",NbPairsGood,NbPairs); //fflush(stdout); PRI=(float)NbPairsGood/(float)NbPairs; //Retour return PRI; } /*------------------------------------------------*/ /*------------------------------------------------*/ /* PROGRAMME PRINCIPAL ---------------------------*/ /*------------------------------------------------*/ int main(int argc,char** argv) { int i,j; int length,width; float tmp; float** MatriceImgSeg; float** MatriceImgGt; float** MatriceImgNul; float** MatriceImgRnd; /*Allocation memoire des matrices*/ MatriceImgSeg=fmatrix_allocate_2d(LENGTH,WIDTH); MatriceImgGt=fmatrix_allocate_2d(LENGTH,WIDTH); MatriceImgNul=fmatrix_allocate_2d(LENGTH,WIDTH); MatriceImgRnd=fmatrix_allocate_2d(LENGTH,WIDTH); /*Initialisation a zero de toutes les matrices*/ for(i=0;i \n\n\n",argv[0]); fflush(stdout); exit(-1); } //LoadImage LoadImagePgm(argv[1],MatriceImgSeg,LENGTH,WIDTH); LoadImagePgm(argv[2],MatriceImgGt,LENGTH,WIDTH); SaveImagePgm((char*)"ImgSeg",MatriceImgSeg,LENGTH,WIDTH); SaveImagePgm((char*)"ImgGt",MatriceImgGt,LENGTH,WIDTH); system("display ImgSeg.pgm&"); system("display ImgGt.pgm&"); float PRI,PRIImgNul,PRIImgRnd,RIAdj; for(i=0;i