salut à tous
Je travaille actuellement sur le débruitage en ondelettes,
pour le débritage j'ai procédé comme suit, je prend l'image, je lui ajoute du bruit de variance sigma , puis je débruite.
Mais,il y a une méthode pour estimer sigma à partir de la transformée en ondelette de l'image, j'ai essayé de l'appliquer, je vous fournie son code source:
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 %charger l'image im=imread('\Hoffman.jpg'); im=rgb2gray(im); im=double(im); %bruiter l'image Hoffman par un bruit gaussien n = size(im,1); sigma = 20; x = im + sigma*randn(size(im)); % Find default values. In this case fixed form threshold % is used with estimation of level noise, thresholding % mode is soft and the approximation coefficients are % kept. [thr,sorh,keepapp] = ddencmp('den','wv',x); NBpixel = size(im,1) * size(im,2); lamda =sqrt( 2 * log(NBpixel)); th = sigma * lamda; % De-noise image using global thresholding option. xd = wdencmp('gbl',x,'bior4.4',1,th,sorh,keepapp)
j'ai essayé d'integer cette fonction dans mon code de débruitage en ajoutant les lignes de code suivantes:
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 function sigma=EstimSigma(I,y) [nrow,ncol]=size(I); I=double(I); nb=log2(ncol)-1; wc=I; sigma=0; for i=1:nrow wc(i,1:ncol)=FWT_PO(wc(i,1:ncol),nb,y); end twc(1:ncol,1:nrow)=wc(1:nrow, 1:ncol)'; for i=1:ncol twc(i,1:nrow)=FWT_PO(twc(i,1:nrow),nb,y); end wc(1:nrow,1:ncol)=twc(1:ncol,1:nrow)'; Abswc=abs(wc); %estimation de la médiane sur le carré des hautes fréquences horizontales %et basses fréquences verticales S1=[]; for i=1:nrow/2 S1=[S1,Abswc(i,ncol/2+1:ncol)]; end M1=median(S1); %estimation de la médiane sur le carré des basses fréquences horizontales %et hautes fréquences verticales S2=[]; for i=nrow/2+1:nrow S2=[S2,Abswc(i,1:ncol/2)]; end M2=median(S2); %estimation de la médiane sur le carré des hautes fréquences horizontales %et hautes fréquences verticales S3=[]; for i=nrow/2+1:nrow S3=[S3,Abswc(i,ncol/2+1:ncol)]; end M3=median(S3); %Moyenne des médiane : M=(M1+M2+M3)/3; sigma=M/0.6745;
quand j'ai appliqué cette fonction j'ai trouvé une valeur de sigma qui est trés grande de l'odre de 10^(13).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 %bruiter l'image Hoffman n = size(im,1); y = qmf(im,1); sigma=EstimSigma(im,y); x = im + sigma*randn(size(im))
Pouvez vous me dire d'ou vient l'erreur SVP.
Merci d'avance![]()
Partager