Problème d'égalisation d'histogramme
salut,
quelqu'un pourrait-il m'aider à verifier mon code réalisant une égalisation d'histo?
Le problème c'est que je l'utilise pour une vidéo et il me renvoie toujours la même image.
Merci
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
| void egalisation ( void *_imgsrc, void *_imgdst, uint32 _largeur, uint32 _hauteur )
{
uint32 hist[256];
uint32 histPROP[256];
uint32 histCUMUL[256];
uint32 n;
uint8 *psrc, *pdst, *pend ;
n = _largeur * _hauteur;
pend = (uint8*)_imgsrc + n;
int i;
int k;
//initialisation de l'histo:
for ( i = 0; i < 256; i++ )
hist[ i ] = 0;
//calcul de l'histo
for (psrc = (uint8*)_imgsrc; psrc < pend; psrc++)
hist[*psrc ]++;
//calcul de l'histo proportionné
for ( i = 0; i < 256; i++ )
histPROP[i] = hist[i] / n;
int somme = 0;
//calcul de l'histo cumulé
for ( k = 0; k < 256; k++ )
{
somme+= histPROP[k];
histCUMUL[k] = somme;
}
//egalisation
for (psrc = (uint8*)_imgsrc, pdst = (uint8*)_imgdst; psrc < pend; psrc++, pdst++)
{
*pdst = 255 * histCUMUL[*psrc] ;
}
} |