Salut à tous,
Mon programme est bizarreet je ne sais pas pourquoi
j'explique: c'est un programme qui est censé traiter toute l'image mais ce n'est pas le cas, il traite une partie et laisse l'autre telle qu'elle(j'ai fait mes tests pour une image 496x386)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 unsigned int Histogram[256], Transform[256]; BYTE ImageData[1000][1000]; int x, y, i, j, sum; H=Image1->Picture->Bitmap->Height; W=Image1->Picture->Bitmap->Width; for(int x=0;x<H;x++) for(int y=0;y<W;y++) { a=Image1->Picture->Bitmap->Canvas->Pixels[x][y]; b=a%256; g=(a/256)%256; r=(a/(256*256))%256; ImageData[x][y]= (r*0.299+g*0.587+b*0.114); } // initialisation de l'histogramme for (i=0; i<=255; i++) Histogram[i] = 0; // Construction de l'histogramme for (x=0; x<=H; x++) for (y=0; y<=W; y++) { Histogram[ImageData[x][y]]++; } // transformation for (i=0; i<=255; i++) { sum = 0; for (j=0; j<=i; j++) sum += Histogram[j]; Transform[i] = INT(255.0*sum/(H*W)); } // Transformation de l'image for (x=0; x<=H; x++) for (y=0; y<=W; y++) { ImageData[x][y] = Transform[ImageData[x][y]]; } // affichage de l'image for (x=0; x<=H; x++) for (y=0; y<=W; y++) { Image1->Canvas->Pixels[x][y]=(TColor)((int)(ImageData[x][y]+256*ImageData[x][y]+256*256*ImageData[x][y])); }
Si vous avez une solution n'hésitez pas à me laisser un message![]()
Partager