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.

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)
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
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;
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
 
%bruiter l'image Hoffman 
 n = size(im,1);
y = qmf(im,1);
 sigma=EstimSigma(im,y);     
x = im + sigma*randn(size(im))
quand j'ai appliqué cette fonction j'ai trouvé une valeur de sigma qui est trés grande de l'odre de 10^(13).

Pouvez vous me dire d'ou vient l'erreur SVP.

Merci d'avance