Bonjour

j'ai un problème et je veux de l'aide.
je veux calculer les dérivées partielles d'une image 3D par exemple le cylindre en utilisant un filtrage récursif gaussien

Exemple pour une image I je veux Ix,Iy,Ixx,Iz ,Ixyz etc...
avec le masque exp((-X.^2-Y.^2-Z.^2)/(2*Sigma^2));
et je procède comme suit:

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
 
 bo=0.4/Sigma;
 b1=-0.4/Sigma.^3;
 b2=-0.4/Sigma.^3;
 b3 = 1/Sigma.^2;
 b4 = 1.2/Sigma.^3;
 b5 = 0.4/Sigma.^5;
 
 [X,Y,Z] = ndgrid(3*Sigma:3*Sigma);
 %calcul des derrivees de la gaussien
 hx=X*bo.^2*b1*gaussxyz(X,Y,Z,Sigma);
 
 hy=Y*bo.^2*b1*gaussxyz(X,Y,Z,Sigma);
 
 hz=Z*bo.^2*b1*gaussxyz(X,Y,Z,Sigma);
 
 hxx=bo.^2*b2*(1-b3*X.^2)*gaussxyz(X,Y,Z,Sigma);
 
 hxy=b1.^3*X*Y*gaussxyz(X,Y,Z,Sigma);
 
 hxyz=b1.^3*X*Y*Z*gaussxyz(X,Y,Z,Sigma);
 
 hxxx=(bo.^2/Sigma.^2)*(b4*X+b5*X.^3)*gaussxyz(X,Y,Z,Sigma);
 %derrivees partielles de l'image
 Ix=imfilter(I,hx,'replicate','conv');
 Iy=imfilter(I,hy,'replicate','conv');
 Iz=imfilter(I,hz,'replicate','conv');
 Ixx=imfilter(I,hxx,'replicate','conv');
 Ixy=imfilter(I,hxy,'replicate','conv');
 Ixyz=imfilter(I,hxyz,'replicate','conv');
 Ixxx=imfilter(I,hxxx,'replicate','conv');
le probleme c'est que quand j'exécute comme suit l'image obtenue est totalement noire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
  im1 = im2double(imread('lena.jpg'));  
  [x y z]=cylinder();
  A=[x y z];
  [Ix,Iy,Iz,Ixx,Ixxx,Ixy,Ixyz]=herssxyz(im1,1);
  figure, imshow(Ix);
  figure, imshow(Ixyz);
  figure, imshow(im1);