Salut à tous,


Mon programme est bizarre et 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