Bonjour à tous,
j'ai pour projet de faire quelques algorithmes de filtres(flou etc) et je m'attaque en ce moment au flou gaussien. J'ai regardé sur wikipédia pour la petite formule et j'essaye de l'appliquer à ma fonction, mais je dois faire une erreur car l'image au final est toute noir. Voilà mon code(je viens de débuter avec DevIL):
Bon j'ai presque pas de doutes que le problème vient de la formule car elle renvoie un nombre qui tend vers 0. Mais je ne sais pas comment faire autrement. Savez-vous comment faire? Merci^^
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 // je vous fais grâce des includes int main(){ srand(time(NULL)); ilInit(); iluInit(); ILuint image; ILubyte *data; ILint width; ILint height; ilGenImages(1, &image); ilBindImage(image); ilLoadImage("source.jpg"); ilConvertImage(IL_RGB, IL_DOUBLE); data = ilGetData(); width = ilGetInteger(IL_IMAGE_WIDTH); height = ilGetInteger(IL_IMAGE_HEIGHT); double taux = 0.01; // j'ai essayé avec plusieurs for(unsigned i = 0; i < (width * height * 24); ++i){ data[i] = (1 / (sqrt(2 * M_PI * (taux * taux)))) * exp((-((double)data[i] * (double)data[i]) / (2 * (taux * taux)))); } ilEnable(IL_FILE_OVERWRITE); ilSaveImage("destination.jpg"); ilShutDown(); return 0; }
Partager