Mihai Sprinceana
Un forum de programare cu de toate. Va astept sa va inscrieti si sa deveniti moderatori. Oricine este binevenit aici sa se inscrie si sa aiba acces la informatie free! Fiecare este liber sa adauge proiecte programe free etc. Ajutati acest forum sa devina o comunitate puternica unde fiecare invata de la fiecare! Tot ce trebuie sa faceti este sa va inregistrati si fiecare contributie se poate dovedi utila in timp! Forumul este free informatia free dk aveti timp liber ajutati si pe ceilalti si invatati si voi in acelasi timp! Haideti sa facem ceva pt.a ne ajuta intre noi! Cititi regulament postare forum inainte de a posta!
Lista Forumurilor Pe Tematici
Mihai Sprinceana | Inregistrare | Login

POZE MIHAI SPRINCEANA

Nu sunteti logat.
Nou pe simpatie:
just_iulia din Giurgiu
Femeie
25 ani
Giurgiu
cauta Barbat
26 - 48 ani
Mihai Sprinceana / Programe RNRF / Calcul indice incrucisare(crossing index) pentru o imagine de test Moderat de Laur69, fireratbat, profu.info, sade5000
Autor
Mesaj Pagini: 1
mihaispr
Administrator

Inregistrat: acum 18 ani
Postari: 2142
Programul sursa il luati de aici:


Include si prezentarea proiectului.

Inainte de a rula programul cititi prezentarea proiectului.

Dupa ce faceti un test repetati optiunea 1 si 2 (de citire a matricii) apoi tastati iarasi 3 pentru a va calcula un nou indice de incrucisare si puneti alte coordonate decat primele testate(care erau 4 si 2 si care alegeau pixelul 0).Practic eu pot calcula indicele de incrucisare atat pt.pixeli albi(0) cat si pt.pixeli negri(1).

In cazul de fata veti pune x=2 si y=2(situatia in care alegeti un pixel 1 din imagine).

Al treilea test presupune repetarea optiunilor 1,2 si 3 si introduceti x=20 si y=20.

Va va afisa mesajul ca indicele de incrucisare nu poate fi calculat deoarece imaginea voastra binara 8*8 este depasita(20*20).

Iata codul sursa propriu-zis scris in C++:


/*Calculul indicelui de incrucisare ale unei imagini de test(imagine binara(alb-negru sau imagine cu 2 niveluri de gri)- data de o matrice avand valori binare
0 si 1,0 asociat pixelului alb,1 asociat pixelului negru*/

//comentariu pe o linie

/*comentariu dorit pe mai multe linii
comentariu continuare etc
etc
*/

#include<stdio.h>
#include<conio.h>
#include<process.h>

FILE* f;

int ok,a[10][10],i,j,opt,k,ii,jj,count,x,y;

//functia de citire a matricei din fisier
void citire_mat()
{clrscr();
for(j=0;j<=9;j++) a[0][j]=0;   
for(i=1;i<=9;i++) a[i][9]=0;
for(j=8;j>=0;j--) a[9][j]=0;
for(i=8;i>=1;i--) a[i][0]=0;
f=fopen("index.txt","rt" );//deschidere pentru citire text-read text option
for(i=1;i<=8;i++)  //consider imaginea mea de 8*8
for(j=1;j<=8;j++)
  fscanf(f,"%d",&a[i][j]);//valorile sunt citite in fisierul index.txt
fclose(f);//inchidere fisier
printf("Matricea a fost citita din fisier" );
}


//functia de afisare a matricei pe ecran
void afisare_mat()
{
clrscr();
for(i=1;i<=8;i++)
{
    for(j=1;j<=8;j++)
      printf("%d ",a[i][j]);
  printf("\n" );
}
}

int alege_coord(int a[10][10])
{
printf("\nAbscisa este:" );scanf("%d",&x);
printf("Ordonata este:" );scanf("%d",&y);
return a[x][y];
}

//functia de calcul a indicelui de incrucisare
float indice_incrucisare(int a[10][10],int ii, int jj)
{int i,j,count=0;
count=0; //initial nr de schimbari este 0
i=ii-1;
j=jj-1;
for(j=y-1;j<=y;j++)
if(a[x-1][j]!=a[x-1][j+1]) count++;
for(i=x-1;i<=x;i++)
if(a[i][y+1]!=a[i+1][y+1]) count++;
for(j=y+1;j>=y;j--)
if(a[x+1][j]!=a[x+1][j-1]) count++;
for(i=x+1;i>=x;i--)
if(a[i][y-1]!=a[i-1][y-1]) count++;
printf("Calcul indice incrucisare %f",(float)count/2);
return (float)count/2;//intoarce valoarea indicelui de incrucisare al unui pixel
}


void main(void)
{clrscr();
ok=0;
do
{
puts("\n\n0.Iesire program" );
puts("1.Citire matrice" );
puts("2.Afisare matrice" );
puts("3.Calcul indice incrucisare" );
printf("\nIntroduceti optiunea:" );scanf("%d",&opt);
switch(opt)
  {case 1:citire_mat();break;
   case 2:afisare_mat();break;
   case 3:{ k=alege_coord(a);/*k-reprezinta variabila globala in care am ales punctul de coordonate (x,y) citit de la tastatura se poate calcula si pentru k=0 indicele de incrucisare*/          
if(k==1 || k==0) count=indice_incrucisare(a,ii,jj);
          else if(x>8 && y>8)
          printf("\nIntroduceti alte coordonate" );
          }
   break;
  }
}while (opt!=0);
}


pus acum 18 ani
   
Pagini: 1  

Mergi la