Traitement d'image s'arrête au milieu de l'image
Salut à tous,
Mon programme est bizarre :cfou: et je ne sais pas pourquoi :triste:
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 :alerte: (j'ai fait mes tests pour une image 496x386)
Code:
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:wink: