bonsoir,enf�te puisque je vais attaquer l'etalement d'un histogramme je cherche la formule qui fait ce travaille sinon des explication pour comprendre
car j'ai lus plein de discusion sur cette etape mais j'ai vrement rien compris.
bonsoir,enf�te puisque je vais attaquer l'etalement d'un histogramme je cherche la formule qui fait ce travaille sinon des explication pour comprendre
car j'ai lus plein de discusion sur cette etape mais j'ai vrement rien compris.
Je vais t'envoyer � un message que tu as d�j� �cris: http://www.developpez.net/forums/sho...d.php?t=440609
Salut !
Pour un bitmap 8 bits c'est assez simple et tr�s rapide puisque chaque pixel est stock� sous forme d'un index auquel correspond une teinte dans sa palette (il n'y a que 256 couleurs).
Il est inutile dans ce cas de passer par Canvas->Pixels[X][Y], sauf si on a du temps � perdre.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 int HistoCouleurs[256];Si on doit aussi repr�senter les couleurs de la palette (pour l'histogramme par exemple), il est possible de les extraire.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12 Graphics::TBitmap *S = Image1->Picture->Bitmap; ZeroMemory(HistoCouleurs, sizeof(int) * 256); //je sais... 1024 Byte *Ligne; for(int y = 0; y < S->Height; y++) { Ligne = (Byte*)S->ScanLine[y]; for(int x = 0;x < S->Width; x++) { HistoCouleurs[ Ligne[x] ]++; } }
Ca peut �galement servir pour faire l'histogramme des R,G,B mais aussi pour calculer tr�s rapidement les niveaux de gris des couleurs de la palette (d�tecter les doublons ou plus puisque... ici on ne sait jamais ce que donne cette conversion).
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 PALETTEENTRY Colors[256];L'encodage de PALETTEENTRY vers TColor se fait ainsi :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 //REM Graphics::TBitmap *S... GetPaletteEntries(S->Palette, 0, 256, Colors);
Par contre pour un bitmap 24 bits �a peut �tre un peu plus compliqu� � mettre en oeuvre.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4 PALETTEENTRY e = Colors[n]; //Par exemple : Canvas->Pen->Color = (TColor)RGB(e.peRed, e.peGreen, e.peBlue);
Je te conseille de dessiner l'histogramme sur une autre fiche (form) que celle qui porte l'image (une FormStyle = fsStayOnTop) !
A plus !
Partager