Bonjour a tous,
je suis entrain de realiser un petit projet sur C qui consiste a lire une video YUV , de faire une copie de cette derniere et d'ajouter un bruit gaussien a la version copié, cest a dire la video original ne doit pas etre modifier et le resultat de la modification doit etre visible sur la deuxieme video.
pour l'addition du bruit gaussien je dois utiliser la methode Polar (Polar Method)
https://en.wikipedia.org/wiki/Marsaglia_polar_method
maintenemant je vais vous montrer mon travail et dites moi ce que vous pensez.
le code bien evidement nest pas fonctionnel, j'ai bien pu lire le premier fichier (video) et de faire une copie sans modifier le contenu et je n'arrive pas d'implimenter la function Polar sur la version copié, donc si vous avez une idée a ce sujet, n'hesitez pas a me repondre.
(PS: desoler pour le français cassé, je suis un etudiant étranger en Allemagne)
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 void polar(double *x1, double *x2) //methode polar { double u, v, q, p; do { u = 2.0 * ((float) rand()/RAND_MAX) - 1; v = 2.0 * ((float) rand()/RAND_MAX) - 1; q = u * u + v * v; } while (q >= 1.0 || q == 0.0); p = sqrt(-2 * log(q) / q); *x1 = u * p; *x2 = v * p; } int main(void) { FILE *fp1, *fp2; double a1,a2; fp1= fopen("FOOTBALL_352x288_30_orig_01.yuv","rb"); if (fp1 == NULL) { exit(1); } fp2= fopen("FOOTBALL_352x288_30_copy_02.yuv","wb"); if (fp2 == NULL) { exit(1); } int buffer; while(!feof(fp1)) { fread((void *)&buffer, sizeof(buffer),1,fp1); polar(&a1,&a2); fwrite((void *)&a1,sizeof(buffer),1,fp2); } fclose(fp1); fclose(fp2); return 0; }
Partager